So ersetzen Sie den Punkt (.) In einer Zeichenfolge in Java


86

Ich habe einen String namens persons.name

Ich möchte das DOT .durch ersetzen, /*/ dh meine Ausgabe wird seinpersons/*/name

Ich habe diesen Code ausprobiert:

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

Ich erhalte die StringIndexOutOfBoundsException.

Wie ersetze ich den Punkt?

Antworten:


145

Sie benötigen zwei umgekehrte Schrägstriche vor dem Punkt, einen, um dem Schrägstrich zu entkommen, damit er durchkommt, und den anderen, um dem Punkt zu entkommen, damit er buchstäblich wird. Schrägstriche und Sternchen werden wörtlich behandelt.

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
sollte es nicht sein xpath.replaceAll("\\\\.", "/*/")?
ha9u63ar

9

Verwenden Sie Apache Commons Lang :

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

oder mit eigenständigem JDK:

String a = "\\*\\"; // or: String a = "/*/";
String replacement = Matcher.quoteReplacement(a);
String searchString = Pattern.quote(".");
String str = xpath.replaceAll(searchString, replacement);

7

Wenn Sie eine einfache Zeichenfolge ersetzen möchten und nicht die Fähigkeiten regulärer Ausdrücke benötigen, können Sie nur verwenden replace, nicht replaceAll.

replace Ersetzt jeden übereinstimmenden Teilstring, interpretiert sein Argument jedoch nicht als regulären Ausdruck.

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.