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í:

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?

2 Solutions collect form web for “Android Java – String .replaceAll para reemplazar caracteres específicos (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

Introduzca aquí la descripción de la imagen

  • Grupos java regex con android
  • Android / Java: comprueba si url es url válida de youtube
  • Fuerza de cierre en la expresión regular!
  • Utilizar un signo de interrogación como String en android
  • Jsoup obtiene elemento en value = ""
  • División de la cadena con RegEx en Android
  • Regex palabra entera
  • Formato de registro de registro de Android c2dm
  • ¿Cómo puedo eliminar el "+" y el código del país de un número de teléfono?
  • ¿Cómo puedo crear una expresión regular para esto en android?
  • Android que convierte la cadena a la secuencia de la matriz
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.