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

  • Buscar una subcadena entre ciertos caracteres en un índice desconocido
  • Jsoup obtiene elemento en value = ""
  • ¿Qué regex se puede utilizar para filtrar dalvikvm y dalvikvm-heap mensajes desde el logcat
  • Android reemplazar con regex
  • Permitir sólo charcters seleccionados basados ​​en regex en un EditText
  • Problema que coincide con el patrón regex en Android
  • Divide la cadena en la última aparición del carácter
  • ¿Cómo busco una lista de correo electrónico para un formato determinado?
  • Reemplazar todas las letras de una cadena menos la primera y la última en Java
  • Referencia a grupos coincidentes anteriores dentro de un regex
  • Diferencia de regex de Java y Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.