Как заменить точку (.) В строке в Java

87

У меня есть строка с именем persons.name

Я хочу заменить DOT .на, /*/ т.е. мой результат будетpersons/*/name

Я пробовал этот код:

String a="\\*\\";
str=xpath.replaceAll("\\.", a);

Я получаю исключение StringIndexOutOfBoundsException.

Как заменить точку?

Сумитра Чаттерджи
источник

Ответы:

147

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

str=xpath.replaceAll("\\.", "/*/");          //replaces a literal . with /*/

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String)

Femi
источник
1
не должно быть xpath.replaceAll("\\\\.", "/*/")?
ha9u63ar
9

Используйте Apache Commons Lang :

String a= "\\*\\";
str = StringUtils.replace(xpath, ".", a);

или с автономным JDK:

String a = "\\*\\"; // or: String a = "/*/";
String replacement = Matcher.quoteReplacement(a);
String searchString = Pattern.quote(".");
String str = xpath.replaceAll(searchString, replacement);
Palacsint
источник
9

Если вы хотите заменить простую строку и вам не нужны возможности регулярных выражений, вы можете просто использовать replace, а не replaceAll.

replace заменяет каждую совпадающую подстроку, но не интерпретирует ее аргумент как регулярное выражение.

str = xpath.replace(".", "/*/");
Khelwood
источник
1
Это должен быть принятый ответ, ИМО.
Аарон Леманн,
-1

вернуть предложение .replaceAll ("\ s", ".");

Хазари Рам Арши
источник