Android Java – String .replaceAll para reemplazar caracteres específicos (regex)
Necesito eliminar algunos caracteres "especiales" específicos y reemplazarlos con una cadena vacía si aparecen. Actualmente tengo un problema con el regex, probablemente con el escape de Java. No puedo poner todos juntos, simplemente no funciona, he intentado mucho! T_T
Actualmente lo estoy haciendo uno por uno que es un poco tonto, pero por ahora al menos funciona, así:
- Expresión regular de Android para obtener enlaces de la fuente de la página web
- ¿Qué significa * + en regexp
- Expresión regular en Android para el campo de contraseña
- Cómo puedo encontrar todas las coincidencias con una expresión regular en android
- Regex para eliminar el número de pista del nombre de la canción?
public static String filterSpecialCharacters(String string) { string = string.replaceAll("-", ""); string = string.replaceAll("\\[", ""); string = string.replaceAll("\\]", ""); string = string.replaceAll("\\^", ""); string = string.replaceAll("/", ""); string = string.replaceAll(",", ""); string = string.replaceAll("'", ""); string = string.replaceAll("\\*", ""); string = string.replaceAll(":", ""); string = string.replaceAll("\\.", ""); string = string.replaceAll("!", ""); string = string.replaceAll(">", ""); string = string.replaceAll("<", ""); string = string.replaceAll("~", ""); string = string.replaceAll("@", ""); string = string.replaceAll("#", ""); string = string.replaceAll("$", ""); string = string.replaceAll("%", ""); string = string.replaceAll("\\+", ""); string = string.replaceAll("=", ""); string = string.replaceAll("\\?", ""); string = string.replaceAll("|", ""); string = string.replaceAll("\"", ""); string = string.replaceAll("\\\\", ""); string = string.replaceAll("\\)", ""); string = string.replaceAll("\\(", ""); return string; }
Ésos son todo el carácter que necesito quitar:
- [ ] ^ / , ' * : . ! > < ~ @ # $ % + = ? | " \ ) (
Estoy claramente perdiendo algo, no puedo averiguar cómo ponerlo todo en una línea. ¿Ayuda?
- Regex palabra entera
- Regex para determinar las tarjetas de crédito en Android
- Android / Java: comprueba si url es url válida de youtube
- Fuerza de cierre en la expresión regular!
- ¿Cómo busco una lista de correo electrónico para un formato determinado?
- Android java regex coinciden con todos menos un carácter
- ¿Qué hace (?! A) {0}? Significa en un regex de Java?
- ¿Cómo validar una cadena usando java regex?
Su código no funciona de hecho porque .replaceAll("$", "")
reemplaza un final de cadena con una cadena vacía. Para reemplazar un literal $
, necesitas escapar de él. El mismo problema es con la eliminación del símbolo de tubo.
Todo lo que necesitas hacer es poner los caracteres que necesitas reemplazar en una clase de caracteres y aplicar el cuantificador +
para un mejor rendimiento, como esto:
string = string.replaceAll("[-\\[\\]^/,'*:.!><~@#$%+=?|\"\\\\()]+", "");
Tenga en cuenta que dentro de una clase de caracteres, la mayoría de los "metacaracteres regex especiales" pierden su estatus especial, sólo tiene que escapar [
, ]
, \
, un guión (si no está al inicio / final de la clase de carácter) (Si es el primer símbolo en la clase de caracteres "positivo").
DEMO :
String s = "-[]^/,'*:.!><~@#$%+=?|\"\\()TEXT"; s = s.replaceAll("[-\\[\\]^/,'*:.!><~@#$%+=?|\"\\\\()]+", ""); System.out.println(s); // => TEXT
Utilice estos códigos
String REGEX = "YOUR_REGEX"; Pattern p = Pattern.compile(REGEX); Matcher m = p.matcher(yourString); yourString = m.replaceAll("");
ACTUALIZACIÓN:
Su REGEX se parece a algo así
String REGEX = "-|\\[|\\]|\\^|\\/|,|'|\\*|\\:|\\.|!|>|<|\\~|@|#|\\$|%|\\+|=\\?|\\||\\\\|\\\\\\\\|\\)|\\(";
SAPMLE:
String yourString = "#My (name) -is @someth\ing""; //Use Above codes Log.d("yourString",yourString);
SALIDA
- Cómo hacer RTSP servidor en el teléfono android?
- Actualización de la barra de progreso en la vista de lista