util online matches example java android regex eclipse whitespace

online - Java no funciona con regex / s, dice: secuencia de escape no válida



regex java 8 (3)

Debes escapar de la barra oblicua

start_from = start_from.replaceAll("//s", "+");

Quiero reemplazar todos los caracteres de espacio en blanco en una cadena con un "+" y todo "ß" con "ss" ... funciona bien para "ß", pero de alguna manera eclipse no me deja usar / s para un espacio en blanco. Intenté "/ t" en su lugar, pero tampoco funciona ... Me aparece el siguiente error:

Secuencia de escape inválida (las válidas son / b / t / n / f / r / "/ ''/)

este es mi código:

try { String temp1 = from.getText().toString(); start_from = temp1.replaceAll("ß", "ss"); start_from = start_from.replaceAll("/s", "+"); }

¿Por qué no funciona? ¿Es un problema con Android, eclipse o qué?

¡gracias por adelantado!


El problema es que / es un carácter de escape en java , así como patrones de expresiones regulares. Si quiere hacer coincidir el patrón de expresiones regulares /n , digamos, y seguir adelante y escribir

replaceAll("/n", "+");

El patrón de expresiones regulares no terminaría siendo /n : se convertiría en una nueva línea real, ya que eso es lo que "/n" significa en Java. Si desea que el patrón contenga una barra diagonal inversa, deberá asegurarse de escapar de esa barra invertida, de modo que no se trate como un carácter especial dentro de la cadena.

replaceAll("//s", "+");


Puede usar la clase java.util.regex.Pattern y usar algo como p = Pattern.compile("/s"); en combinación con p.matcher(start_from).replaceAll("+") . Alternativamente, simplemente escapa de tu metacaracter "/ s" como "// s".