Как заменить символ плюс с помощью метода Java String.replaceAll - PullRequest
41 голосов
/ 04 марта 2009

Какое правильное регулярное выражение для символа плюса (+) в качестве первого аргумента (т.е. строки для замены) в методе replaceAll Java в классе String? Я не могу понять синтаксис правильно.

Ответы [ 8 ]

85 голосов
/ 04 марта 2009

Вам нужно экранировать + для регулярного выражения, используя \.

Однако Java использует параметр String для создания регулярных выражений, который использует \ для своих собственных escape-последовательностей. Так что вам нужно сбежать от самого \:

"\\+"
31 голосов
/ 04 марта 2009

если сомневаешься, пусть java сделает всю работу за тебя:

myStr.replaceAll(Pattern.quote("+"), replaceStr);
14 голосов
/ 04 марта 2009

Вам нужно будет экранировать + с помощью \, а поскольку \ сам по себе является специальным символом в строках Java, вам нужно экранировать его с помощью другого \.

Таким образом, ваша строка регулярного выражения будет определена как "\\ +" в коде Java.

т.е. этот пример:

String test = "ABCD+EFGH";
test = test.replaceAll("\\+", "-");
System.out.println(test);
2 голосов
/ 28 ноября 2011

Скажем, вы хотите заменить - на \\\-, используйте:

 text.replaceAll("-", "\\\\\\\\-");
2 голосов
/ 19 ноября 2010

Другие уже указали правильный метод:

  1. Выход из + как \\+
  2. Использование метода Pattern.quote, который экранирует все метасимволы регулярного выражения.

Другой метод, который вы можете использовать, - поместить + в класс символов. Многие из метасимволов регулярного выражения (., *, + среди многих других) трактуются буквально в классе символов.

Так что вы также можете сделать:

orgStr.replaceAll("[+]",replaceStr);

Ideone Link

2 голосов
/ 19 марта 2009

Если вам нужна простая строка поиска и замены (т.е. вам не нужно регулярное выражение), может быть проще использовать StringUtils из Apache Commons , который позволит вам написать:

mystr = StringUtils.replace(mystr, "+", "plus");
0 голосов
/ 14 июня 2019

Как насчет замены нескольких символов "+" на неопределенное количество повторов?

Пример: тест + тест + тест + 1234

(+) или [+], кажется, выбирают один буквенный символ, но повторяется.

0 голосов
/ 21 августа 2012
String str="Hello+Hello";   
str=str.replaceAll("\\+","-");
System.out.println(str);

OR

String str="Hello+Hello";   
str=str.replace(Pattern.quote(str),"_");
System.out.println(str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...