Me gustaría mostrar solo a-z0-9
en una cadena, y los otros caracteres deben reemplazarse por una cadena nula
String s=this.saveFileName.replaceAll("/[a-z0-9. ]/", "");
Esto no funciona, ¿alguna idea por qué?
Respuestas
13 para la respuesta № 1Prueba esto:
String s = "abc123ABC!@#$%^;"xyz";
String newString = s.replaceAll("[^a-z0-9]", "");
//newString is now "abc123xyz"
Esto aprovecha el operador de negación (^) en las clases de caracteres que básicamente dice, "empareja todo excepto los siguientes caracteres".
Además, no necesita barras diagonales al definir expresiones regulares de Java.
2 para la respuesta № 2
Usted no necesita estos /
/
.
Algunos lenguajes como PHP esperan que coloques la expresión regular entre un par de delimitadores, Java no.
Como quieres reemplazar todo lo que no sea a-z0-9
necesitas el regex [^a-z0-9]
o alternativamente [^a-z\d]
UN [..]
es una clase de char para que coincida con un char que figura en ella. La clase char también puede contener rangos como [a-z]
que coincide con una letra minúscula. Ahora un ^
al comienzo de la clase char lo niega, por lo que [^a-z]
coincide con cualquier char otro que una letra minúscula.
1 para la respuesta № 3
Lo has probado sin el //
¿marcas?
String s=this.saveFileName.replaceAll("[^a-z0-9]", "");
0 para la respuesta № 4
Este regex parece hacer el truco:
String s="Testing-1.2.3_$".replaceAll("[^a-z0-9. ]", "");
salida:
esting1.2.3
El símbolo ^ niega el conjunto y las barras no son necesarias.