Comment remplacer le point (.) Dans une chaîne en Java

87

J'ai une chaîne appelée persons.name

Je veux remplacer le DOT .par /*/ ie ma sortie serapersons/*/name

J'ai essayé ce code:

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

Je reçois StringIndexOutOfBoundsException.

Comment remplacer le point?

soumitra chatterjee
la source

Réponses:

147

Vous avez besoin de deux barres obliques inverses avant le point, l'une pour échapper à la barre oblique afin qu'elle passe, et l'autre pour échapper au point afin qu'il devienne littéral. Les barres obliques et l'astérisque sont traités littéralement.

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
la source
1
ça ne devrait pas être xpath.replaceAll("\\\\.", "/*/")?
ha9u63ar
9

Utilisez Apache Commons Lang :

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

ou avec JDK autonome:

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

Si vous souhaitez remplacer une simple chaîne et que vous n'avez pas besoin des capacités des expressions régulières, vous pouvez simplement utiliser replace, non replaceAll.

replace remplace chaque sous-chaîne correspondante mais n'interprète pas son argument comme une expression régulière.

str = xpath.replace(".", "/*/");
Khelwood
la source
1
Cela devrait être la réponse acceptée, OMI.
Aaron Lehmann
-1

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

Hazari Ram Arshi
la source