2010-12-01 29 views
5

Me doy cuenta de que hay un buen número de preguntas sobre esto, pero todavía no he encontrado una solución adecuada para mi situación. Sé de string.trim() y no tiene ningún efecto. Después de investigar en línea y descubrir un mundo de odio por string.trim() me doy cuenta de que el carácter de espacio en blanco que intento eliminar debe estar fuera del rango que .trim() provee.Recorte de espacios en blanco de una cadena en Java

Estoy usando algunas expresiones regulares, que no entiendo completamente, para quitar la cadena de caracteres especiales con exclusión de '=' y ',' y todos los espacios en blanco, EXCEPTO si es inmediatamente después de ','.

Sin embargo, ahora quiero eliminar completamente todos los espacios en blanco de la cadena. Cualquier idea sobre cómo editar la expresión regular que estoy usando para lograr esto sería apreciada. De nuevo, lo que quiero es '=' y ',' junto con dígitos y letras para permanecer. Se deben eliminar todos los espacios en blanco y otros caracteres especiales.

Aquí está el código hasta ahora:

if (argsToBeFiltered != null) { 
      // Remove all whitespace and chars apart from = and , 
      String filteredArgs = argsToBeFiltered.replaceAll(
        "[^=,\\da-zA-Z\\s]|(?<!,)\\s", ""); 
      return filteredArgs; 
} 

Respuesta

5

Tiempo para aprender una expresión regular!

Consulte Pattern y varios tutoriales de expresiones regulares como Lesson: Regular Expressions.

[^=,\\da-zA-Z\\s] 

Esa parte dice NO partido (^) los personajes: =, ,, dígitos (\ d), A-Z (A-Z) o espacios en blanco (\ s). Sin embargo, es probable que desee que coincida con los espacios ahora (ya que no hay una segunda parte de la coma posterior para unirlos). Por lo tanto:

argsToBeFiltered.replaceAll("[^=,\\da-zA-Z]", ""); 
+3

Eso no está del todo bien. '\\ s' (o' \ s' después de escapar de Cadena) es más que espacios, pero también incluye pestañas verticales y horizontales, retorno de carro/avance de línea, etc ... – Powerlord

+0

¡Gracias, gracias, gracias, gracias! – Frank

+0

@R. Bemrose Gracias. Corregido –

1

Prueba esto: -

if (argsToBeFiltered != null) { 
      // Remove all whitespace and chars apart from = and , 
      String filteredArgs = argsToBeFiltered.replaceAll(
        "\\w+"); 
      return filteredArgs; 
} 
+0

Gracias CoolBeans, aunque lo puse para mí. Saludos por el interés! – Frank

Cuestiones relacionadas