Заменить все символы [] 'из строки

77
6

У меня есть String.

 String myStrangeString = "java-1.7, ant-1.6.5, sonar-runner], [java-1.7, ant-1.6.5, sonar-runner], [java-1.7, ant-1.6.5, sonar-runner";

Я хочу удалить все символы [] из myStrangeString.

Я пытался,

myStrangeString.replaceAll("[[]]", "")

но получил ошибку, поскольку

Return Value :Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 3
[[]]
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.clazz(Pattern.java:2493)
at java.util.regex.Pattern.sequence(Pattern.java:2030)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at java.lang.String.replaceAll(String.java:2162)
at Test.main(Test.java:8)

что я могу сделать, чтобы удалить [] из моего myStrangeString

спросил(а) 2021-01-25T19:41:30+03:00 4 месяца, 4 недели назад
1
Решение
117

Вам нужно избегать этих внутренних скобок. [ и ] являются специальными метасимволами в регулярном выражении, что означает начало и конец класса символов. Таким образом, чтобы соответствовать буквальным [, ] символам, вам необходимо избежать этого.

myStrangeString.replaceAll("[\\[\\]]", "")

Пример:

String myStrangeString = "java-1.7, ant-1.6.5, sonar-runner], [java-1.7, ant-1.6.5, sonar-runner], [java-1.7, ant-1.6.5, sonar-runner";
System.out.println(myStrangeString.replaceAll("[\\[\\]]", ""));

Вывод:

java-1.7, ant-1.6.5, sonar-runner, java-1.7, ant-1.6.5, sonar-runner, java-1.7, ant-1.6.5, sonar-runner

ответил(а) 2021-01-25T19:41:30+03:00 4 месяца, 4 недели назад
45

я думаю, это ответ, который вы ищете

myStrangeString.replaceAll("[\\[\\]]", "");

но если ваша строка невелика, а производительность не проблема, вы можете сделать это за два шага... удалить все [а затем удалить все]

 myStrangeString.replace("[", "");
myStrangeString.replace("]", "");

ответил(а) 2021-01-25T19:41:30+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема