Come sostituire il punto (.) In una stringa in Java


87

Ho una stringa chiamata persons.name

Voglio sostituire il DOT .con /*/ cioè il mio output saràpersons/*/name

Ho provato questo codice:

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

Ricevo StringIndexOutOfBoundsException.

Come si sostituisce il punto?

Risposte:


147

Hai bisogno di due barre rovesciate prima del punto, una per sfuggire alla barra in modo che attraversi e l'altra per sfuggire al punto in modo che diventi letterale. Le barre e gli asterisco in avanti vengono considerati letterali.

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
non dovrebbe essere xpath.replaceAll("\\\\.", "/*/")?
ha9u63ar

9

Usa Apache Commons Lang :

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

o con JDK autonomo:

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

9

Se vuoi sostituire una semplice stringa e non hai bisogno delle capacità delle espressioni regolari, puoi semplicemente usare replace, no replaceAll.

replace sostituisce ogni sottostringa corrispondente ma non interpreta il suo argomento come un'espressione regolare.

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

1
Questa dovrebbe essere la risposta accettata, IMO.
Aaron Lehmann

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.