Bagaimana cara mengganti titik (.) Dalam string di Java


87

Saya memiliki String yang dipanggil persons.name

Saya ingin mengganti DOT .dengan /*/ output sayapersons/*/name

Saya mencoba kode ini:

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

Saya mendapatkan StringIndexOutOfBoundsException.

Bagaimana cara mengganti titik?

Jawaban:


147

Anda memerlukan dua garis miring terbalik sebelum titik, satu untuk menghindari garis miring agar bisa menembus, dan yang lainnya untuk menghindari titik agar menjadi literal. Garis miring dan tanda bintang diperlakukan secara literal.

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
bukankah seharusnya begitu xpath.replaceAll("\\\\.", "/*/")?
ha9u63ar

10

Jika Anda ingin mengganti string sederhana dan Anda tidak membutuhkan kemampuan ekspresi reguler, Anda bisa menggunakan saja replace, tidak replaceAll.

replace mengganti setiap substring yang cocok tetapi tidak menafsirkan argumennya sebagai ekspresi reguler.

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

9

Gunakan Apache Commons Lang :

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

atau dengan JDK mandiri:

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.