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


у меня есть строка под названием persons.name

Я хочу заменить точку . С /*/ то есть мой выход будет persons/*/name

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

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

я получаю StringIndexOutOfBoundsException.

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

2 68

2 ответа:

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

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)

использовать 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);