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?

soumitra chatterjee
sumber

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)

Femi
sumber
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(".", "/*/");
khelwood.dll
sumber
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);
palacsint.dll
sumber
-1

kembalikan kalimat.replaceAll ("\ s", ".");

Hazari Ram Arshi
sumber