У меня есть строка с именем persons.name
persons.name
Я хочу заменить DOT . на /*/, т.е. мой вывод будет persons/*/name
.
/*/
persons/*/name
Я попробовал этот код:
String a="\\*\\"; str=xpath.replaceAll("\\.", a);
Я получаю StringIndexOutOfBoundsException.
Как заменить точку?
Вам нужно две обратные косые черты перед точкой, одну, чтобы избежать косой черты, чтобы она прошла, и другую, чтобы избежать точки, чтобы она стала буквальной. Косая черта и звездочка трактуются буквально.
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);
Если вы хотите заменить простую строку и вам не нужны способности регулярных выражений, вы можете просто использовать replace, а не replaceAll.
replace
replaceAll
replace заменяет каждую подходящую подстроку, но не интерпретирует ее аргумент как регулярное выражение.
str = xpath.replace(".", "/*/");
вернуть предложение.replaceAll ("\ s", ".");