Java - Eliminar espacios en blanco en un String

Cuando tratamos texto es habitual necesitar eliminar los espacios en blanco innecesarios. Java dispone de varios métodos de la clase String que nos permiten limpiar una cadena de caracteres eliminando los espacios al principio y al final a través de trim o haciendo uso de replaceAll

En el siguiente código se exponen algunos ejemplos prácticos:


public static void main(String[] args) {
     
        //Un espacio al principio, espacios en el medio y un espacio al final
        String x = " Hola, que    tal ";
        String y;
             
        y = x.trim();  System.out.println(y);
        //Elimina los espacios al comienzo y al final, pero no los intermedios
        //Resultado: "Hola, que   tal"

        //Reemplaza todos los espacios por el carácter vacío
        y = x.replaceAll(" ", "");  System.out.println(y);
        //Resultado: "Hola,quetal"

        //Reemplaza varios espacios en blanco por uno
        y = x.replaceAll(" +", " ");  System.out.println(y);
        //Resultado: " Hola, que tal "
     
        //Reemplaza varios espacios por uno y elimina los del comienzo y el  final
        y = x.replaceAll(" +", " ").trim();  System.out.println(y);
        //Resultado: "Hola, que tal"
     
    }

Una gran parte de las veces utilizaremos la última opción, el uso de replaceAll junto con el de trim, esto nos permite limpiar todos los espacios al principio y al final y reducir los espacios intermedios exactamente a uno.


⸎  ¿Qué representa " +" en replaceAll?

Este método permite reemplazar un String (sea un carácter o un conjunto de ellos) dentro por otro retornado el String resultante. 

La cabecera del método es la siguiente:

public String replaceAll(String regex, String replacement)

regex - el texto a reemplazar, se puede utilizar simplemente una cadena de caracteres o un patrón como es el caso.
replacement - el texto con el que se va a reemplazar.

En nuestro patrón " +", utilizamos el espacio en blanco y el carácter +, que es equivalente a uno o más caracteres, con esto lo que indicamos es que busque los espacios en blanco, estén formados por un único espacio o por más de uno. 


11 comentarios :

  1. Gracias amigo el ejemplo me sirvió para solucionar un problema en el trabajo, saludos.

    ResponderEliminar
  2. pe bro el + me considera como un caracter

    ResponderEliminar
  3. Muchísimas gracias, me has ayudado en un problema que llevaba 2 horas intentando corregir. Bravísimo.

    ResponderEliminar
    Respuestas
    1. Muchas gracias a vosotros por el comentarios! La verdad que había empezado con intención de ir publicando regularmente pero por trabajo, lo tuve mucho tiempo abandonado. Intentaré retormar el blog.

      Eliminar
  4. Buena me srivio, ahorrado todo una tarde de trabajo

    ResponderEliminar
  5. Muchas gracias llevaba horas buscando como eliminar más de un espacio en blanco y solo dejar uno

    ResponderEliminar
  6. newcadena = cadena.replaceAll("\\s{2,}", " ");

    ResponderEliminar
  7. Gracias por la aportación xeonaquino, es otra opción también correcta la que planteas, con el uso de patrones.

    ResponderEliminar
    Respuestas
    1. Te he dejado un comentario abajo, por si puedes ayudarme, gracias.

      Eliminar
  8. Buenas! Necesito que me ayuden, tengo que hacer un ejercicio que me elimine los espacios en blanco del principio y del final, pero no los que hay entre las palabras. Tengo que usar el método Trim en Java. Espero ayuda, gracias.

    ResponderEliminar