Quelle est l'expression rationnelle correcte pour un caractère plus (+) en tant que premier argument (c'est-à-dire la chaîne à remplacer) de la méthode replaceAll
de Java dans la classe String? Je ne peux pas obtenir la syntaxe correcte.
Vous devez échapper le +
pour l'expression régulière en utilisant \
.
Cependant, Java utilise un paramètre String pour construire des expressions régulières, qui utilisent \
pour ses propres séquences d'échappement. Il faut donc échapper au \
lui-même:
"\\+"
en cas de doute, laissez Java faire le travail pour vous:
myStr.replaceAll(Pattern.quote("+"), replaceStr);
Vous aurez besoin d'échapper au + avec un\et parce que\est lui-même un caractère spécial dans les chaînes Java, vous aurez besoin de l'échapper avec un autre \.
Donc, votre chaîne de regex sera définie comme "\\ +" dans le code Java.
C'est à dire. cet exemple:
String test = "ABCD+EFGH";
test = test.replaceAll("\\+", "-");
System.out.println(test);
Supposons que vous souhaitiez remplacer -
par \\\-
, utilisez:
text.replaceAll("-", "\\\\\\\\-");
D'autres ont déjà indiqué la méthode correcte de:
+
en tant que \\+
Pattern.quote
qui échappe à tous les méta-caractères de regex.Une autre méthode que vous pouvez utiliser consiste à placer le +
dans une classe de caractères. Beaucoup de méta-caractères regex (.
, *
, +
parmi beaucoup d'autres) sont traités littéralement dans la classe de caractères.
Donc vous pouvez aussi faire:
orgStr.replaceAll("[+]",replaceStr);
Si vous voulez une chaîne simple find-and-replace (c'est-à-dire que vous n'avez pas besoin de regex), il peut être plus simple d'utiliser le StringUtils de Apache Commons , qui vous permettrait d'écrire:
mystr = StringUtils.replace(mystr, "+", "plus");
String str="Hello+Hello";
str=str.replaceAll("\\+","-");
System.out.println(str);
OR
String str="Hello+Hello";
str=str.replace(Pattern.quote(str),"_");
System.out.println(str);