Eliminar espacios de un String en Java

De ChuWiki

Veamos algunos ejemplos sencillos de cómo podemos eliminar los espacios en blanco dentro de una cadena en java. El código completo en RemoveSpacesFromString.java

Cualquier duda sobre esto o de Java en general suelo atender en el foro de java

Quitar todos los espacios con replace()[editar]

Supongamos una cadena con espacios al principio, entre medias, al final , tabuladores \t y retornos de carro \n

String text = "   Esto es un texto con espacios y \t tabuladores y \n retornos de carro  \n  ";

Si sólo queremos eliminar los espacios, dejando los retornos de carro y tabuladores como están, podemos usar el método replace() de la clase String

// Elimina todos los espacios, pero no los tabuladores ni retornos
System.out.println(text.replace(" ",""));

Simplemente busca todos los " " y los reemplaza por cadenas vacías ""

Quitar espacios, tabuladores y retornos con replaceAll()[editar]

Si queremos eliminar también tabuladores y retornos de carro y no queremos hacer tres llamadas a replace() (una para espacio, otra para \t y otra para \n), podemos usar replaceAll(). La diferencia entre replace() y replaceAll() es que mientras que replace() admite una cadena tal cual, replaceAll() admite una expresión regular, mucho más potente

// Elimina espacios, tabuladores, retornos
System.out.println(text.replaceAll("\\s",""));

En la expresión regular, \\s equivale a cualquier tipo de carácter "blanco", es decir, espacios, tabuladores y retornos.

Quitar espacios del principio y final del String con trim()[editar]

Si queremos eliminar espacios del principio y del final, pero no los de en medio, podemos usar el método trim()

// Elimina espacios delante y detrás
System.out.println(text.trim());

trim() elimina también retornos y tabuladores que haya al principio o final de la cadena.

Quitar espacios del principio o del final del String[editar]

Si queremos eliminar sólo los espacios al principio, debemos usar replaceAll() con una expresión regular

// Elimina espacios, tabuladores y retornos delante.
System.out.println(text.replaceAll("^\\s*",""));

En la expresión regular, ^ es el inicio de la cadena, \\s es cualquier carácter blanco y * indica que se puede repetir 0 o más veces, es decir, reemplazará desde el inicio de la cadena todos los caracteres blancos que encuentre.

Para eliminar caracteres al final, nuevamente replaceAll() con otra expresión regular

// Elimina espacios, tabuladores y retornos detrás.
System.out.println(text.replaceAll("\\s*$",""));

En este caso, \\s* es cualquier número de caracteres blancos y $ representa el final de cadena, por lo que sólo sustituirá los del final.

ATENCIÓN: Los String de java son inmutables[editar]

OJO: Los String en java son inmutables, eso quiere decir que no se pueden modificar, y eso quiere decir que trim(), replace() o replaceAll() NO MODIFICAN la cadena original, sino que nos devuelven una cadena modificada que debemos guardar

String cadenaModificada1 = cadenaOriginal.trim();
String cadenaModificada2 = cadenaOriginal.replace(...);
String cadenaModificada3 = cadenaOriginal.replaceAll(...);

Enlaces[editar]