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".