Я хочу удалить [,], (и) из моей строки java. Я пробовал .replaceAll("(", ""); и .replaceAll("[", "");, но это не сработало. В моей программе str читается из файла.

String str = "I [need] this ]message () without (this[])";
0
Petar Toshev 21 Фев 2016 в 03:09

3 ответа

Лучший ответ

Вам нужно избежать (, ), [ и ]. Вы можете сделать это с помощью \\. Что-то вроде,

String str = "I [need] this ]message () without (this[])";
str = str.replaceAll("[\\[\\]\\(\\)]", "");
System.out.println(str);

Выход

I need this message  without this
4
Elliott Frisch 21 Фев 2016 в 00:13

Возможно, у вас есть решение, но метод replaceAll не изменяет строку. Сохраните результат в переменной:

String str = "I [need] this ]message () without (this[])".replaceAll("[()\\[\\]]", "");

Аргумент "[()\\[\\]]" является регулярным выражением. Внешний [] означает: один из внутренних символов. Это ( и ). Кроме того, вы хотите сопоставить [ и ]. Но вы должны поставить перед ними \\, потому что они имеют особое значение («один из»).

6
exception1 21 Фев 2016 в 00:13

Вам нужно добавить двойную обратную косую черту перед [и (в ваших операторах replaceAll:

str = str.replaceAll("\\[", "").replaceAll("\\(", "").replaceAll("\\]", "").replaceAll("\\)", "");

(К вашему сведению, одиночный \ не будет работать, поскольку он будет оценивать) как экранированный специальный символ,)

1
Gordon MacDonald 21 Фев 2016 в 02:44