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

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

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

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

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


person Muhammad Haryadi Futra    schedule 15.09.2014    source источник
comment
Вы должны добавить \* перед *( Попробуйте это... String test = смотреть телевизор (дома); test = test.replaceAll(\(,).replaceAll(\),);   -  person Akshay Sharma    schedule 21.07.2017


Ответы (7)


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

String test = "watching tv (at home)"; 
test = test.replaceAll("\\p{P}","");
person StackFlowed    schedule 15.09.2014
comment
@MuhammadHaryadiFutra Будьте осторожны, это решение также удаляет такие символы, как ., ,, ; и т. д. - person jeojavi; 15.09.2014
comment
это просто не удаляет скобки, а также другие символы, такие как / и -. и т. д. (16180856-04-20170407-ad/wav/D104) изменен на 161808560420170407adwavD104 - person Adnan Ali; 07.06.2017
comment
@AdnanAli, пожалуйста, прочитайте ответ правильно, если вы его пропустили, то прочитайте комментарий над вашим :) - person StackFlowed; 08.06.2017
comment
Это также удаляет другие символы. Поэтому, если кто-то использует это, не зная об этом, это может вызвать серьезные проблемы. - person Ramanan Durairaj; 02.09.2020

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

Все скобки имеют значение в регулярном выражении: скобки используются в регулярном выражении для ссылки на группы захвата, квадратные скобки используются для < href="http://www.regular-expressions.info/charclass.html">класс символов и фигурные скобки используются для совпадения символов. Поэтому все они должны быть экранированы... Однако здесь символы могут быть просто заключены в класс символов с помощью всего лишь экранирование требуется для квадратных скобок

test = test.replaceAll("[\\[\\](){}]","");
person Reimeus    schedule 15.09.2014

Первый аргумент, передаваемый методу 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"
person hwnd    schedule 15.09.2014

Вы можете использовать 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

person jeojavi    schedule 15.09.2014

Вам нужно выйти из скобки, так как она будет рассматриваться как часть регулярного выражения

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

Также, чтобы удалить все скобки, попробуйте

String test = "watching tv (at home)"; 
test = test.replaceAll("[\\(\\)\\[\\]\\{\\}]","");
person AbstractChaos    schedule 15.09.2014
comment
"\(" вызовет ошибку компиляции, так как это недопустимый escape-символ. "\\(" то что нужно - person zero_dev; 15.09.2014

subject = StringUtils.substringBetween (тема, "[", "]")

person Santhosh Hirekerur    schedule 08.12.2015

Список строк = '[{121223123123123123}]';

Строка accountlist= list.replaceAll([\[\]],);

В этом случае я удаляю [] из строки.

Вывод: список строк = '{121223123123123123}';

person Lakshay Sharma    schedule 20.07.2020