util sheet matches cheat java regex

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:

  1. Escapar el + como //+
  2. Usando el método Pattern.quote que escapa de todos los Pattern.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);

Ideone Link


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