как удалить символ скобок в строке (java)

Я хочу удалить все типы символов скобок (пример: [],(),{}) в строке с помощью java.

Я попытался использовать этот код:

String test = "watching tv (at home)"; 
test = test.replaceAll("(","");
test = test.replaceAll(")","");

но это не работает, помогите мне пожалуйста.

6 ответов


чтобы удалить все знаки препинания, которые включают все скобки, фигурные скобки и sq. скобки... а на вопрос:

String test = "watching tv (at home)"; 
test = test.replaceAll("\p{P}","");

первый аргумент replaceAll принимает регулярное выражение.

все скобки имеют значение в регулярном выражении: скобки используются в регулярном выражении для ссылки группы захвата, квадратные скобки используются для класс персонажа & фигурные скобки используются для совпадения символов. Поэтому все они должны быть спасены...Однако здесь символы могут быть просто заключены в класс персонажа С как раз избегать необходимо для квадрата скобки

test = test.replaceAll("[\[\](){}]","");

первый аргумент, передаваемый replaceAll() метод должен быть регулярным выражением. Если вы хотите соответствовать этим буквальным символам скобки, вам нужно бежать \(, \) них.

вы можете использовать следующее, Чтобы удалить символы скобок. свойство Unicode \p{Ps} будет соответствовать любому виду открывающую скобку и свойство Unicode \p{Pe} соответствует любому виду закрывающего кронштейна.

String test = "watching tv (at home) or [at school] or {at work}()[]{}";
test = test.replaceAll("[\p{Ps}\p{Pe}]", "");
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("{", " ");
test = test.replace("}", " ");

если вы работаете с текстами, я рекомендую вам заменить скобки пустым пространством, чтобы избежать объединения слов:watching tv(at home) -> watching tvat home


subject =StringUtils.substringBetween(при, "[", "]")