Java заменяет все квадратные скобки в строке
Я хочу убрать квадратные скобки из строки, но я не знаю как.
String str = "[Chrissman-@1]";
str = replaceAll("[]", "");
String[] temp = str.split("-@");
System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);
но мой результат: [Chrissman | 1] Квадратные скобки не снимаются.
Я попытался использовать другое регулярное выражение:"[.*?]"
,"[d+]"
но результат тот же, квадратные скобки по-прежнему прикреплены к строке.
Edit:
пробовал:
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.<init>(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("\]","");
ваше регулярное выражение соответствует (и удаляет) только последующие квадратные скобки. Используйте этот код:
str = str.replaceAll("\[|\]", "");
Если вы хотите заменить только пары скобок с содержимым между ними, вы можете использовать это:
str = str.replaceAll("\[(.*?)\]", "");
в настоящее время вы пытаетесь удалить точно строка
[]
- две квадратные скобки, между которыми ничего нет. Вместо этого, вы хотите удалить все[
и отдельно удалить все]
.лично я бы избегал использовать
replaceAll
здесь, поскольку это вводит больше путаницы из - за части regex-я бы использовал:String replaced = original.replace("[", "").replace("]", "");
используйте только методы, которые принимают регулярные выражения, если вы действительно хотите сделать полное сопоставление шаблонов. Когда вы просто хотите заменить все вхождения фиксированной строки,
replace
проще читать и понимать.(есть альтернативные подходы, которые используют форму регулярного выражения и действительно соответствуют шаблонам, но я думаю, что приведенный выше код значительно проще.)
использовать regex
[\[\]]
-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