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

У меня есть строка, называемая persons.name

Я хочу заменить DOT . на /*/ i.e мой вывод будет persons/*/name

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

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

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

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

Ответ 1

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

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)

Ответ 2

Используйте 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);