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?

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)


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);

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(".", "/*/");

1
Cela devrait être la réponse acceptée, OMI.
Aaron Lehmann

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.