Ответ 1
Метод replaceAll пытается сопоставить строковый литерал []
, который не существует в String
, чтобы выполнить замену этих элементов отдельно.
String str = "[[email protected]]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");
Я хочу удалить квадратные скобки из строки, но я не знаю, как это сделать.
String str = "[[email protected]]";
str = replaceAll("\\[\\]", "");
String[] temp = str.split("[email protected]");
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)
Метод replaceAll пытается сопоставить строковый литерал []
, который не существует в String
, чтобы выполнить замену этих элементов отдельно.
String str = "[[email protected]]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");
Ваше регулярное выражение соответствует (и удаляет) только последующие квадратные скобки. Используйте это вместо:
str = str.replaceAll("\\[|\\]", "");
Если вы хотите заменить пары кронштейнов содержимым между ними, вы можете использовать это:
str = str.replaceAll("\\[(.*?)\\]", "$1");
В настоящее время вы пытаетесь удалить точную строку []
- две квадратные скобки, между которыми нет ничего. Вместо этого вы хотите удалить все [
и отдельно удалить все ]
.
Лично я бы избегал использовать replaceAll
здесь, поскольку он вводит больше путаницы из-за части регулярного выражения - я бы использовал:
String replaced = original.replace("[", "").replace("]", "");
Используйте только те методы, которые принимают регулярные выражения, если вы действительно хотите выполнить полное сопоставление шаблонов. Когда вы просто хотите заменить все вхождения фиксированной строки, replace
проще читать и понимать.
(Существуют альтернативные подходы, которые используют форму регулярного выражения и действительно соответствуют шаблонам, но я думаю, что приведенный выше код значительно проще.)
использовать regex [\\[\\]]
-
String str = "[[email protected]]";
String[] temp = str.replaceAll("[\\[\\]]", "").split("[email protected]");
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