sheet - Cómo reemplazar un carácter más usando el método String.replaceAll de Java
java util regex (7)
Digamos que quiere reemplazar -
con ///-
, use:
text.replaceAll("-", "////////-");
¿Cuál es la expresión regular correcta para un carácter más (+) como primer argumento (es decir, la cadena para reemplazar) al método replaceAll
de Java en la clase String? No puedo obtener la sintaxis correcta.
Necesitará escapar el + con un / y porque / es en sí mismo un carácter especial en cadenas de Java, necesitará escapar de él con otro /.
Entonces su cadena de expresiones regulares se definirá como "// +" en código Java.
Es decir, este ejemplo:
String test = "ABCD+EFGH";
test = test.replaceAll("//+", "-");
System.out.println(test);
Necesitas escapar de +
para la expresión regular, usando /
.
Sin embargo, Java usa un parámetro String para construir expresiones regulares, que usa /
para sus propias secuencias de escape. Entonces tienes que escapar del /
sí mismo:
"//+"
Otros ya han declarado el método correcto de:
- Escapar el
+
como//+
- Usando el método
Pattern.quote
que escapa de todos losPattern.quote
regulares.
Otro método que puedes usar es poner el +
en una clase de personaje. Muchos de los metacaracteres de expresiones regulares ( .
, *
, +
Entre muchos otros) se tratan literalmente en la clase de caracteres.
Entonces también puedes hacer:
orgStr.replaceAll("[+]",replaceStr);
Si desea una cadena simple de buscar y reemplazar (es decir, no necesita expresiones regulares), puede ser más simple utilizar StringUtils de Apache Commons , que le permitiría escribir:
mystr = StringUtils.replace(mystr, "+", "plus");
cuando tenga dudas, deje que java haga el trabajo por usted:
myStr.replaceAll(Pattern.quote("+"), replaceStr);
String str="Hello+Hello";
str=str.replaceAll("//+","-");
System.out.println(str);
O
String str="Hello+Hello";
str=str.replace(Pattern.quote(str),"_");
System.out.println(str);