Як замінити крапку (.) У рядку на 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)


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);

9

Якщо ви хочете замінити простий рядок і вам не потрібні можливості регулярних виразів, ви можете просто використовувати replace, а не replaceAll.

replace замінює кожен відповідний підрядок, але не інтерпретує його аргумент як регулярний вираз.

str = xpath.replace(".", "/*/");

1
Це має бути прийнятою відповіддю, ІМО.
Аарон Леманн,

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.