La manipulación de cadenas se realiza con mayor frecuencia durante la programación. Como eliminar espacios dentro o alrededor del texto de la cadena. Esto también se conoce como ‘quitar’ espacios en la cadena. Así que hasta ahora todos somos conscientes de las diferentes formas de eliminar espacios de la cadena en java, a saber, trim, replaceAll. Sin embargo, java 11 ha hecho algunas adiciones nuevas a estos con métodos como, strip , stripLeading, stripTrailing.
La mayoría de las veces, solo usamos el método de recorte para eliminar espacios. Nunca nos detenemos y pensamos que puede haber una mejor manera de satisfacer nuestras necesidades? Claro, trim () funciona bien para la mayoría de los casos, pero hay muchos métodos diferentes en java. Cada uno tiene sus propias ventajas y desventajas. ¿Cómo decidimos qué método nos conviene más?
Bueno, en este blog cubriremos los diferentes métodos en detalle.
- trim (): Eliminar espacios iniciales y finales de la cadena
- strip(): Elimina espacios al principio y al final de la cadena. El método Strip es compatible con el conjunto de caracteres Unicode
- trim vs strip: Diferencias entre el método trim y strip
- stripLeading(): Elimina solo los espacios en blanco del principio de la cadena
- stripTrailing(): Elimina solo los espacios en blanco del final de la cadena
- replace(): Reemplaza todos los caracteres de destino con un nuevo carácter
- replaceAll(): Reemplaza todos los caracteres coincidentes con caracteres nuevos. Este método toma la expresión regular como entrada para identificar la subcadena de destino que necesita ser reemplazada
- replaceAll vs replace: Diferencias entre el método replace y replaceAll
- replaceFirst(): Reemplaza solo la primera aparición de la subcadena de destino con una nueva cadena de reemplazo
Diferentes formas de eliminar espacios de la cadena en java
El punto más importante a tener en cuenta es que en java un objeto de cadena es inmutable. Significa que no podemos modificar una cadena, por lo que todos los métodos devuelven una nueva cadena con todas las transformaciones.el método
trim() en java
trim () es el método más utilizado por los desarrolladores de Java para eliminar espacios iniciales y finales. Para el método de recorte, el carácter de espacio significa cualquier carácter cuyo valor ASCII sea menor o igual a 32 («U+0020»).
Ejemplo de método de recorte para eliminar espacios:
public class StringTrimTest { public static void main(String args) { String string = " String with space "; System.out.println("Before trim: \"" + string +"\""); System.out.println("After trim: \"" + string.trim() +"\""); }}
En CommandLineRunnerImpl
status=running
Before trim: " String with space "After trim: "String with space"
método strip() Java 11
En el lanzamiento de Java 11 se agregó un nuevo método strip() para eliminar los espacios iniciales y finales de la cadena.
Este método se agregó ya que hay varios caracteres de espacio de acuerdo con los estándares Unicode que tienen un valor ASCII superior a 32(‘U+0020’). Ejemplo: 8193 (U + 2001).
Para identificar estos caracteres de espacio, se agregó el nuevo método isWhitespace(int) desde Java 1.5 en la clase de caracteres. Este método utiliza unicode para identificar caracteres de espacio. Puedes leer más sobre los caracteres de espacio unicode aquí.
El método strip utiliza este carácter.Método isWhitespace (int) para cubrir una amplia gama de caracteres de espacios en blanco y eliminarlos.
Ejemplo de strip():
public class StringStripTest { public static void main(String args) { String string = " String with space "; System.out.println("Before strip: \"" + string+"\""); System.out.println("After strip: \"" + string.strip()+"\""); }}
En CommandLineRunnerImpl
status = running
Before strip: " String with space "After strip: "String with space"
Diferencia entre el método trim y strip en java
trim() | tira() |
---|---|
Desde Java 1 | Desde Java 11 |
Utiliza el valor de punto de código(ASCII) | Utiliza el valor Unicode |
Elimina caracteres iniciales y finales(espacio) | Elimina caracteres iniciales y finales (espacio) |
Elimina caracteres con valor ASCII inferior o igual a ‘U + 0020 ‘o’32’ | Elimina todos los caracteres de espacio de acuerdo con unicode |
Veamos el ejemplo en el que usaremos un carácter de espacio en blanco superior a 32 (‘U+0020’) unicode.
public class StringTrimVsStripTest { public static void main(String args) { String string = '\u2001'+"String with space"+ '\u2001'; System.out.println("Before: \"" + string+"\""); System.out.println("After trim: \"" + string.trim()+"\""); System.out.println("After strip: \"" + string.strip()+"\""); }}
Salida:
Before: " String with space "After trim: " String with space "After strip: "String with space"
En el ejemplo anterior podemos ver que el método trim no puede eliminar el carácter de espacio añadido por el carácter unicode ‘\u2001’.
Nota: Si se está ejecutando en una máquina Windows, es posible que no pueda ver la salida similar debido al conjunto unicode limitado. Puede utilizar compiladores en línea para ejecutar el programa. Algunos enlaces de compiladores en línea son los siguientes,
Java-8: https://www.jdoodle.com/online-java-compiler/
Java-11: https://www.tutorialspoint.com/compile_java_online.php
Método stripLeading() Java 11
Añadido en Java 11, el método stripLeading () elimina todos los espacios iniciales de una cadena.
Similar al método de bandas, el marcado con bandas también utiliza caracteres.isWhitespace (int) para identificar espacios en blanco.
public class StringStripLeadingTest { public static void main(String args) { String string = " String with space "; System.out.println("Before: \"" + string+"\""); System.out.println("After : \"" + string.stripLeading()+"\""); }}
Salida:
Before: " String with space "After : "String with space "
Método stripTrailing() Java 11
Añadido en Java 11, el método stripTrailing () elimina todos los espacios finales de una cadena.
Similar al método de bandas, el trazado de bandas también usa caracteres.Es Espacio blanco (int) para identificar espacios en blanco.
public class StringStripTrailingTest { public static void main(String args) { String string = " String with space "; System.out.println("Before: \"" + string+"\""); System.out.println("After : \"" + string.stripTrailing()+"\""); }}
Salida:
Before:" String with space "After :" String with space"
reemplazar (destino de secuencia de caracteres, reemplazo de secuencia de caracteres):
Agregado desde java 1.5, Este método se usa para reemplazar cada subcadena de destino con la cadena de reemplazo especificada.
Este método reemplaza todos los elementos de destino coincidentes.
Nota: Un método más de reemplazo (char oldChar, char newChar) está presente en la clase de cadena de java. La única diferencia es que este método toma un solo carácter como objetivo y reemplazo. No podemos usar este método para eliminar espacio, porque no podemos tener caracteres vacíos como reemplazo.
Ejemplo para eliminar todos los espacios de la cadena
public class StringReplaceTest { public static void main(String args) { String string = " String with space "; System.out.println("Before : \"" + string + "\""); System.out.println("Replace: \"" + string.replace(" ", "") + "\""); }}
Salida:
Before : " String with space "Replace : "Stringwithspace"
replaceAll (Expresión regular de cadena, Reemplazo de cadena)
Añadido en java 1.4, este es uno de los métodos más potentes para la manipulación de cadenas. Podemos usar este método para muchos propósitos.
Usando el método replaceAll () podemos reemplazar cada subcadena de expresión regular coincidente con la cadena de reemplazo dada. Por ejemplo, para eliminar todos los espacios, eliminar los espacios iniciales, eliminar los espacios finales, etc.
Solo necesitamos crear una expresión regular correcta con el parámetro de reemplazo correcto. Algunos ejemplos de expresiones regulares como a continuación:
\s + | Buscar todo el espacio |
^\s + | Buscar todos los espacios al comienzo de la línea |
\s + | Buscar todos los espacios al final de la línea |
Ejemplo para reemplazar espacios en cadena,
Nota: En java para agregar ‘ / ‘tenemos que usar el carácter de escape, por lo que para» \s+ «tenemos que usar» \ \ s+»
public class StringReplaceAllTest { public static void main(String args) { String string = " String with space "; System.out.println("Before replaceAll : \"" + string+"\""); System.out.println("Replace all space : \"" + string.replaceAll(" ", "") + "\""); System.out.println("Replace all regex : \"" + string.replaceAll("\s+", "") + "\""); System.out.println("Replace Leading : \"" + string.replaceAll("^\s+", "") + "\""); System.out.println("Replace trailing : \"" + string.replaceAll("\s+$", "") + "\""); }}
Producto:
Before replaceAll : " String with space "Replace all space : "Stringwithspace"Replace all regex : "Stringwithspace"Replace Leading : "String with space "Replace trailing : " String with space"
Como podemos ver, replaceAll () es un método bastante poderoso si lo usamos con una expresión regular adecuada.
Diferencia entre el método replaceAll y el método replace
replaceAll () | reemplazar() |
---|---|
Desde Java 1.4 | Desde Java 1.5 |
Acepta expresiones regulares para la identificación de destino | Acepta cadenas para la identificación de destino |
Se usa para reemplazar cuerdas fijas o dinámicas | Se usa para reemplazar cuerdas fijas |
Elimina caracteres con un valor ASCII menor o igual a ‘U + 0020 ‘o’32’ | Elimina todos los caracteres de espacio de acuerdo con unicode |
replaceFirst (Expresión regular de cadena, Reemplazo de cadena)
Añadido en java 1.4, el método replaceFirst reemplaza solo la primera coincidencia de una expresión regular dada con una cadena de reemplazo.
Este método puede ser muy útil si solo necesita reemplazar una primera aparición. Por ejemplo, si solo necesitamos eliminar espacios iniciales, podemos usar «\ \ s+ » o » ^ \ \ s+».
También podemos usar este método para eliminar espacios finales utilizando la expresión regular » \ \ s+$». Como esta expresión solo coincidirá con los últimos espacios de la línea. Por lo tanto, los últimos espacios se consideran la primera coincidencia para este método.
Tomemos un ejemplo para eliminar los espacios iniciales y finales de la cadena
public class StringReplaceFistTest { public static void main(String args) { String string = " String with space "; System.out.println("Before : \"" + string+"\""); System.out.println("Replace : \"" + string.replaceFirst("space", "update") + "\""); System.out.println("Leading : \"" + string.replaceFirst("\s+", "") + "\""); System.out.println("Trailing : \"" + string.replaceFirst("\s+$", "") + "\""); }}
Salida
Before : " String with space "Replace : " String with update "Leading : "String with space "Trailing : " String with space"
Lectura rápida :
- Hay diferentes formas de eliminar espacios de la cadena en java
- trim() es el método más común utilizado para eliminar espacios en la cadena
- El método trim no es compatible con unicode y utiliza el valor ascii para identificar caracteres de espacio
- De java 11 se agrega un nuevo método ‘strip()’ para eliminar espacios
- es compatible con unicode y debe usarse para eliminar espacios especialmente en mayúsculas y minúsculas multilingües
- De Java 11 los métodos como stripLeading() y stripTrailing() se añaden para eliminar espacios iniciales y finales.
- Para una eliminación más controlada de espacios, podemos usar replaceAll (), replace (), replaceFirst()