Cómo eliminar los espacios de una cadena en Java

Home >> Programación >> Java


Es probable que en alguna ocasión te hayas encontrado con cadenas que tengan espacios innecesarios al inicio y al final e incluso en el medio. Y cuando hablo de espacios me refiero a espacios en blanco y tabulaciones.

Aunque no lo parezca quitar los espacios es bastante sencillo. La clase String proporciona métodos que pueden ser verdaderamente útiles en esta situación.

Si no sabes cómo quitarlos no te marches y sigue leyendo que te voy a explicar paso a paso como eliminar esos molestos espacios de las cadenas.

Cómo eliminar los espacios del inicio y del final de la cadena
Cómo eliminar los espacios del medio de la cadena
Cómo eliminar los espacios del inicio, del final y del medio de la cadena

Cómo eliminar los espacios del inicio y del final de la cadena

Este es el caso más sencillo: eliminar los espacios que se encuentran al inicio y al final de una cadena.

Mira el siguiente ejemplo:

String cadena = "       Hola mundo      ";

Como puedes comprobar la cadena anterior tiene varios espacios al inicio y al final. ¿Cómo los quito? Utilizando el método trim() de la clase String.

El método trim() elimina todos los espacios y tabulaciones que se encuentran al inicio y al final de la cadena. No modifica la cadena original, sino que devuelve una nueva con el resultado.

Vamos a probarlo:

String cadena = "       Hola mundo      ";
String resultado = cadena.trim();
        
System.out.println("**"+cadena+"**");
System.out.println("**"+resultado+"**");

Fíjate que en la línea 2 utilizo la cadena que contiene los espacios para llamar a trim() con el operador punto (.): cadena.trim() y guardo el resultado en una nueva cadena que he llamado resultado.

La cadena original queda intacta y la nueva cadena almacenará el cambio sin los espacios.

Para comprobar que ha funcionado puedes mostrar por pantalla ambas cadenas de la misma forma que lo hago yo (líneas 4 y 5), concatenando unos asteriscos al inicio y al final. Esto no sirve para nada, solo lo hago para ver más claramente si hay espacios o no.

La salida por pantalla es la siguiente:

**       Hola mundo      **
**Hola mundo**

En la primer caso hay espacios entre los asteriscos y la cadena y en el segundo caso los espacios han desaparecido y los asteriscos se muestran pegados a los caracteres inicial y final.

Fácil ¿no? Sigue leyendo que ahora te voy a explicar como eliminar los espacios que están en medio de la cadena.

Cómo eliminar los espacios del medio de la cadena

Supongamos que tienes esta cadena:

String cadena = "Hola      mundo";

Hay varios espacios entre hola y mundo cuando debería haber un único espacio.

No existe en la clase String un método específico para esta situación, pero existe un método que podemos «adaptar» para este fin. Se trata del método replaceAll().

¿Cómo funciona replaceAll()? Este método busca una cadena dentro de otra y la reemplaza todas sus ocurrencias por lo que le indiquemos. En este caso nos puede resultar muy útil puesto que lo que intentamos hacer es buscar todos los espacios en blanco consecutivos dentro de la cadena y remplazarlos por uno solo. ¿Tiene sentido?

Vamos a ver cómo se hace:

String cadena = "Hola      mundo";
String resultado = cadena.replaceAll(" +"," ");
        
System.out.println(cadena);
System.out.println(resultado);

Fíjate en la línea 2. Llamo a replaceAll() pasándole dos parámetros: el primero es la cadena que busco y quiero remplazar y el segundo es la cadena por la que la voy a remplazar.

Puede que te llame la atención la cadena que busco: » +». ¿Qué es ese +? Lo que intento es que busque espacios consecutivos, pero no sé cuántos. La idea es que funcione siempre, indistintamente de la cantidad de espacios que haya. El + indica que busco al menos un espacio (hay un espacio delante del +, si hubiese una ‘a’, por ejemplo, significaría que busco al menos una ‘a’). Y resalto el «al menos», porque 3 espacios seguidos también encajarían con la búsqueda y 7 espacios y 10, etc.

Una vez que localiza un fragmento de la cadena que encaja con ese patrón lo reemplaza por la cadena que le paso en el segundo parámentro, es decir, por un único espacio.

Recuerda que las cadenas son inmutables, por tanto replaceAll() no modifica la cadena original sino que devuelve una nueva cadena con el resultado. Por eso asigno el resultado a una nueva cadena que he llamado resultado.

Ejecútalo y verás que la salida generada será la siguiente:

Hola      mundo
Hola mundo

Cómo eliminar los espacios del inicio, del final y del medio de la cadena

Hemos llegado al caso más complejo, pero si has entendido los dos anteriores es muy sencillo porque solo hay que combinar los dos métodos que te he contado antes: trim() y replaceAll().

Vamos a ver un ejemplo para que lo entiendas mejor:

String cadena = "   Hola      mundo   ";

Esa cadena tiene espacios al principio, en el medio y al final. Vamos a quitarlos aplicando los dos métodos que te he contado:

String cadena = "   Hola      mundo   ";
String resultado = cadena.replaceAll(" +"," ");
resultado = resultado.trim();
        
System.out.println("**"+cadena+"**");
System.out.println("**"+resultado+"**");

Primero aplico replaceAll() (línea 2) para reemplazar todos los espacios consecutivos por uno solo. Piensa que esto también lo aplicará si los espacios están al inicio o al final, no solo con los que hay en medio de la cadena. De esta forma, los espacios que se encuentran en medio de la cadena se convierten en uno, que es lo que buscamos, pero los del inicio y del final también y eso no lo queremos.

¿Cómo lo soluciono? Usando trim() (línea 3). Tras la ejecución de trim() los espacios iniciales y finales desaparecen. Para que la cadena final quede guardado asigno de nuevo a la variable resultado.

Si quieres puedes unir ambas operaciones un una única línea de la siguiente forma y el resultado seguirá siendo el mismo:

String resultado = cadena.replaceAll(" +"," ").trim();

Ya solo falta comprobar que todo es correcto. Si imprimes las dos cadenas (líneas 5 y 6) verás que la cadena original se conserva y la nueva cadena guardada en resultado tiene los espacios tal y como los queremos:

**   Hola      mundo   **
**Hola mundo**

Puedes concatenar unos asteriscos, igual que hago yo, para apreciar mejor lo que ocurre con los espacios del inicio y del final.

Como puedes comprobar hemos conseguido lo que buscábamos, eliminar los espacios del inicio y del final y reducir los espacios intermedios a uno solo.

Los comentarios están cerrados.

Subir ↑