Java заменяет все квадратные скобки в строке
Я хочу убрать квадратные скобки из строки, но я не знаю как.
String str = "[Chrissman-@1]"; str = replaceAll("[]", ""); String[] temp = str.split("-@"); System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);
но мой результат: [Chrissman | 1] Квадратные скобки не снимаются.
Я попытался использовать другое регулярное выражение: «[.*?]» , «[d+]» но результат тот же, квадратные скобки все еще прикреплены к строке.
str.replaceAll("]", ""); str.replaceAll("[", "");
Exception in thread "Thread-4" java.util.regex.PatternSyntaxException: Unclosed character class near index 0 [ ^ at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.clazz(Unknown Source) at java.util.regex.Pattern.sequence(Unknown Source) at java.util.regex.Pattern.expr(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.replaceAll(Unknown Source)
7 ответов
метод replaceAll пытается соответствовать строковому литералу [] который не существует в String попробуйте заменить эти элементы отдельно.
String str = "[Chrissman-@1]"; str = str.replaceAll("\[", "").replaceAll("\]","");
ваше регулярное выражение соответствует (и удаляет) только последующие квадратные скобки. Используйте этот код:
Если вы хотите только заменить пары скобок содержимым между ними, вы можете использовать это:
в настоящее время вы пытаетесь удалить точно строка [] — две квадратные скобки, между которыми ничего нет. Вместо этого, вы хотите удалить все [ и отдельно удалить все ] .
лично я бы избегал использования replaceAll здесь, поскольку это вводит больше путаницы из-за части regex-я бы использовал:
String replaced = original.replace("[", "").replace("]", "");
используйте только методы, которые принимают регулярные выражения, если вы действительно хотите сделать полное сопоставление шаблонов. Когда вы просто хотите заменить все вхождения фиксированной строки, replace проще читать и понимать.
(существуют альтернативные подходы, которые используют форму регулярного выражения и действительно соответствуют шаблонам, но я думаю, что приведенный выше код значительно проще.)
String str = "[Chrissman-@1]"; String[] temp = str.replaceAll("[\[\]]", "").split("-@"); System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);
Nickname: Chrissman | Power: 1
вы также можете сделать это так:
String data = "[yourdata]"; String regex = "\[|\]"; data = data .replaceAll(regex, ""); System.out.println(data);
Use this line:) String result = strCurBal.replaceAll("[(" what ever u need to remove ")]", ""); String strCurBal = "(+)3428"; Log.e(" before omit ", strCurBal); String result = strCurBal.replaceAll("[()]", ""); Log.e(" Result Omit ", result); o/p : before omit : (+)3428 Result Omit : +3428 String finalVal = result.replaceAll("[+]", ""); Log.e("finalVal ", finalVal); finalVal : 3428
String str, str1; Scanner sc = new Scanner(System.in); System.out.print("Enter a String : "); str = sc.nextLine(); str1 = str.replaceAll("[aeiouAEIOU]", ""); System.out.print(str1);
Удаление фигурных, квадратных, круглых скобок
Нужно удалить из строки все фигурные, квадратные и круглые скобки. Как это лучше сделать? В регуляторных выражениях, как ни пытался, не получилось разобраться.
Пытался удалять через replaceAll(), но exception из-за регулярных выражений.
Может есть какие идеи? Спасибо.
Как в eclipse настроить расположение фигурных скобок?
Как в eclipse настроить расположение фигурных скобок? То есть я хочу чтобы классы и методы.
За один просмотр файла проверить баланс круглых скобок в тесте, используя стек
помогите, пожалуйста, решить Дан текстовый файл с программой на алгоритмическом языке. За один.
В некотором тексте проверьте правильность расположения круглых, квадратных и фигурных скобок
В некотором тексте проверьте правильность расположения круглых, квадратных и фигурных скобок. .
Разница инициализаций с помощью круглых и фигурных скобок
В чем разница между () и <> при инициализации указателя ? SharedPointer(): ptr< nullptr >.
Сообщение было отмечено Egorika как решение
Решение
public class Main \\) }
GreeNicee, спасибо, работает! А если у меня массив таких разных символов, которые зарезервированы как регулярные, как мне их заменить? То есть у меня, к примеру, есть строка «++» в массиве arr[] и я хочу сделать
Я минут 5 почитал про регулярки, врятли я вам смогу подсказать как будет максимально рационально и элегантно их использовать в том или ином случае). Не бойтесь пробовать сами, я вот с регулярками, также как и вы не работал никогда, предположил (без гугления даже) как должно работать и все работает.
public class Main { public static void main(String[] args) { String str = "+asdAD++asd+asdasd++asd++++A"; String[] arr = new String[1]; arr[0] = "\\+\\+"; System.out.println(str.replaceAll(arr[0], "")); } }
Как удалить символ скобки в строке (Java)
Я хочу удалить символ всех типов скобок (пример: [],(), <>) в строке с помощью java. Я попытался использовать этот код:
String test = "watching tv (at home)"; test = test.replaceAll("(",""); test = test.replaceAll(")","");
Вы должны добавить \ * перед * ( Попробуйте это . String test = «смотря телевизор (дома)»; test = test.replaceAll («\ («, «»). ReplaceAll («\)», «» );
6 ответов
Чтобы удалить все знаки препинания, которые включают все скобки, фигурные скобки и квадратные скобки. в соответствии с вопросом:
String test = "watching tv (at home)"; test = test.replaceAll("\\p","");
@MuhammadHaryadiFutra Будьте осторожны, это решение удаляет также такие символы, как . , , , ; , так далее.
это не только удаляет скобки, но также и другие символы, такие как «/» и «-«. и т. д. (16180856-04-20170407-ad / wav / D104) изменен на 161808560420170407adwavD104
@AdnanAli, пожалуйста, прочитайте ответ правильно, если вы пропустили это, то прочитайте комментарий над вашим 🙂
Первый аргумент replaceAll принимает регулярное выражение.
Все скобки имеют смысл в regex: скобки используются в regex для ссылки групп захвата, квадратные скобки используются для символьного класса, а фигурные скобки используются для совпадения символов. Поэтому все они должны быть экранированы. Однако здесь символы могут просто быть заключены в класс символов с простое экранирование, требуемое для квадратных скобок
Первый аргумент, переданный методу replaceAll() , должен быть регулярным выражением. Если вы хотите совместить эти буквенные символы, вам нужно вывести \\( , \\) их.
String test = "watching tv (at home) or [at school] or ()[]<>"; test = test.replaceAll("[\\p\\p]", ""); System.out.println(test); //=> "watching tv at home or at school or at work"
Вам нужно выйти из скобки, поскольку она будет рассматриваться как часть регулярного выражения
String test = "watching tv (at home)"; test = test.replaceAll("\\(",""); test = test.replaceAll("\\)","");
Также, чтобы удалить все скобки, попробуйте
String test = "watching tv (at home)"; test = test.replaceAll("[\\(\\)\\[\\]\\]","");
«\(» приведет к ошибке компиляции, так как это недопустимый управляющий символ. «\\(» это то, что нужно
Вы можете использовать String.replace вместо String.replaceAll для лучшей производительности, поскольку он ищет точную последовательность и не нуждается в регулярных выражениях.
String test = "watching tv (at home)"; test = test.replace("(", " "); test = test.replace(")", " "); test = test.replace("[", " "); test = test.replace("]", " "); test = test.replace("", " ");
Если вы работаете с текстами, я рекомендую вам заменить скобки пустым пространством, чтобы избежать объединения слов: watching tv(at home) -> watching tvat home
Замена Java все квадратные скобки в строке
Я хочу удалить квадратные скобки из строки, но я не знаю как.
String str = "[Chrissman-@1]"; str = replaceAll("\\[\\]", ""); String[] temp = str.split("-@"); System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);
Но мой результат: [Chrissman | 1] квадратные скобки не становится удаленным.
Я пытался использовать другой regex: «\\[.*?\\]» , «\\[\\d+\\]» но результатом является то же, квадратные скобки, все еще присоединенные на строке.
str.replaceAll("]", ""); str.replaceAll("[", "");
Exception in thread "Thread-4" java.util.regex.PatternSyntaxException: Unclosed character class near index 0 [ ^ at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.clazz(Unknown Source) at java.util.regex.Pattern.sequence(Unknown Source) at java.util.regex.Pattern.expr(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.replaceAll(Unknown Source)
7 ответов
replaceAll метод пытается соответствовать Строковому литералу [] , который не существует в String попытка, заменяющая эти объекты отдельно.
String str = "[Chrissman-@1]"; str = str.replaceAll("\\[", "").replaceAll("\\]","");
Ваши соответствия regex (и удаляет), только последующие квадратные скобки. Используйте это вместо этого:
, Если Вы только хотите заменить пар скобки промежуточным содержанием, Вы могли бы использовать это:
String str = "[Chrissman-@1]"; String[] temp = str.replaceAll("[\\[\\]]", "").split("-@"); System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);
Nickname: Chrissman | Power: 1
Вы в настоящее время пытаетесь удалить точный строка [] — две квадратных скобки ни с чем между ними. Вместо этого Вы хотите удалить весь [ и отдельно удалить весь ] .
Лично я избегал бы использования replaceAll здесь, поскольку это представляет больше беспорядка из-за regex части — я использовал бы:
String replaced = original.replace("[", "").replace("]", "");
Только используют методы, которые берут регулярные выражения, если Вы действительно хотите сделать полное сопоставление с образцом. Когда Вы просто хотите заменить все случаи фиксированной строки, replace более просто читать и понять.
(Существуют альтернативные подходы, которые используют форму регулярного выражения и действительно соответствуют шаблонам, но я думаю, что вышеупомянутый код значительно более прост.)
Как убрать скобки [] из ArrayList # toString ()?
Я создал список массивов на Java, который выглядит примерно так:
public static ArrayList error = new ArrayList<>(); for (int x= 1; x
Когда я печатаю ошибки, я получаю их как
Теперь я хочу удалить квадратные скобки ([]) из этого списка массивов. Я думал, что могу использовать метод errors.remove («[«), но потом обнаружил, что это просто логическое значение и отображает истину или ложь. Может ли кто-нибудь подсказать, как я могу этого добиться?
Спасибо заранее за вашу помощь.
11 ответов
Вероятно, вы звоните System.out.println, чтобы распечатать список. В JavaDoc говорится:
This method calls at first String.valueOf(x) to get the printed object's string value
Скобки добавлены реализацией ArrayList toString . Чтобы удалить их, вы должны сначала получить String:
String errorDisplay = errors.toString();
А затем снимите скобки примерно так:
errorDisplay = errorDisplay.substring(1, errorDisplay.length() - 1);
Не рекомендуется полагаться на реализацию toString() . toString() предназначен только для создания удобочитаемого представления для ведения журнала или отладки. Так что лучше построить String самостоятельно во время итерации:
List errors = new ArrayList<>(); StringBuilder sb = new StringBuilder(); for (int x = 1; x sb.setLength(sb.length() - 1); String errorDisplay = sb.toString();
Обратите внимание, что это не массив, а просто строка, отображающая содержимое списка. Чтобы создать массив из списка, вы можете использовать list.toArray ():
// create a new array with the same size as the list Integer[] errorsArray = new Integer[errors.size()]; // fill the array errors.toArray(errorsArray );
String output = errors.toString().replaceAll(«(^\\[|\\]$)», «»);