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?

Soumitra Chatterjee
quelle

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)

Femi
quelle
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);
Palacsint
quelle
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(".", "/*/");
khelwood
quelle
0

return satz.replaceAll ("\ s", ".");

Hazari Ram Arshi
quelle