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.quoteque escapa de todos losPattern.quoteregulares.
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);