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?

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

  • Permitir sólo charcters seleccionados basados ​​en regex en un EditText
  • Validación de la fecha de Regex para aaaa-mm-dd
  • Regex <img> Análisis de etiquetas con src, width, height
  • Expresión regular de Android: devuelve la cadena correspondiente
  • Expresión regular para eliminar todos los caracteres no imprimibles
  • ¿Puedo hacer regex reemplazar en Android con grupos del partido?
  • cómo encontrar si el texto de entrada es una url usando regex
  • ¿Cómo puedo eliminar la cadena de caracteres dinámicos de una cadena?
  • Manejo de spoiler BBcode Android
  • Android: ¿dividido en un salto de línea en String? (Párrafos)
  • Cómo utilizar SpannableString con Regex en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.