Procesamiento de cadenas con Apache Commons Lang 3

1. Información general

La biblioteca Apache Commons Lang 3 proporciona soporte para la manipulación de clases centrales de las API de Java. Este soporte incluye métodos para manejar cadenas, números, fechas, simultaneidad, reflexión de objetos y más.

Además de proporcionar una introducción general a la biblioteca, este tutorial demuestra los métodos de la clase StringUtils que se utiliza para la manipulación de instancias de String .

2. Dependencia de Maven

Para usar la biblioteca Commons Lang 3, simplemente extráigala del repositorio central de Maven usando la siguiente dependencia:

 org.apache.commons commons-lang3 3.5 

Puede encontrar la última versión de esta biblioteca aquí.

3. StringUtils

La clase StringUtils proporciona métodos para operaciones nulas seguras en cadenas.

Muchos métodos de esta clase tienen los correspondientes definidos en la clase java.lang.String , que no son seguros para nulos . Sin embargo, esta sección se centrará en cambio en varios métodos que no tienen equivalentes en la clase String .

4. El método containsAny

El método containsAny comprueba si una cadena determinada contiene algún carácter en el conjunto de caracteres dado. Este conjunto de caracteres se puede pasar en forma de String o char varargs.

El siguiente fragmento de código demuestra el uso de dos sabores sobrecargados de este método con verificación de resultados:

String string = "baeldung.com"; boolean contained1 = StringUtils.containsAny(string, 'a', 'b', 'c'); boolean contained2 = StringUtils.containsAny(string, 'x', 'y', 'z'); boolean contained3 = StringUtils.containsAny(string, "abc"); boolean contained4 = StringUtils.containsAny(string, "xyz"); assertTrue(contained1); assertFalse(contained2); assertTrue(contained3); assertFalse(contained4);

5. El método containsIgnoreCase

El método containsIgnoreCase comprueba si una cadena determinada contiene otra cadena sin diferenciar entre mayúsculas y minúsculas.

El siguiente fragmento de código verifica que la cadena "baeldung.com" comprende "BAELDUNG" cuando se ignoran mayúsculas y minúsculas:

String string = "baeldung.com"; boolean contained = StringUtils.containsIgnoreCase(string, "BAELDUNG"); assertTrue(contained);

6. El método countMatches

El método counterMatches cuenta cuántas veces aparece un carácter o subcadena en una Cadena determinada .

La siguiente es una demostración de este método, confirmando que 'w' aparece cuatro veces y "com" aparece dos veces en la cadena "bienvenido a www.baeldung.com" :

String string = "welcome to www.baeldung.com"; int charNum = StringUtils.countMatches(string, 'w'); int stringNum = StringUtils.countMatches(string, "com"); assertEquals(4, charNum); assertEquals(2, stringNum);

7. Método de adición y anteposición

Los métodos appendIfMissing y appendIfMissingIgnoreCase añaden un sufijo al final de una cadena determinada si no termina con ninguno de los sufijos pasados ​​de manera sensible a mayúsculas y minúsculas, respectivamente.

De manera similar, los métodos prependIfMissing y prependIfMissingIgnoreCase anteponen un prefijo al comienzo de una cadena determinada si no comienza con ninguno de los prefijos pasados.

En el siguiente ejemplo, los métodos appendIfMissing y prependIfMissing se utilizan para agregar un sufijo y un prefijo a la cadena "baeldung.com" sin que se repitan estos afijos:

String string = "baeldung.com"; String stringWithSuffix = StringUtils.appendIfMissing(string, ".com"); String stringWithPrefix = StringUtils.prependIfMissing(string, "www."); assertEquals("baeldung.com", stringWithSuffix); assertEquals("www.baeldung.com", stringWithPrefix);

8. Método de cambio de caso

La clase String ya define métodos para convertir todos los caracteres de una cadena a mayúsculas o minúsculas. Esta subsección solo ilustra el uso de métodos que cambian el caso de un String de otras formas, incluyendo swapCase , capitalize y uncapitalize .

El método swapCase intercambia el caso de una cadena, cambiando mayúsculas a minúsculas y minúsculas a mayúsculas:

String originalString = "baeldung.COM"; String swappedString = StringUtils.swapCase(originalString); assertEquals("BAELDUNG.com", swappedString);

El método de capitalización convierte el primer carácter de una Cadena dada a mayúsculas, dejando todos los caracteres restantes sin cambios:

String originalString = "baeldung"; String capitalizedString = StringUtils.capitalize(originalString); assertEquals("Baeldung", capitalizedString);

El método sin mayúsculas convierte el primer carácter de la Cadena dada a minúsculas, dejando todos los caracteres restantes sin cambios:

String originalString = "Baeldung"; String uncapitalizedString = StringUtils.uncapitalize(originalString); assertEquals("baeldung", uncapitalizedString);

9. Método de inversión

La clase StringUtils define dos métodos para invertir cadenas: reverse y reverseDelimited . El método reverse reordena todos los caracteres de un String en el orden opuesto, mientras que el método reverseDelimited reordena los grupos de caracteres, separados por un delimitador especificado.

El siguiente fragmento de código invierte la cadena "baeldung" y valida el resultado:

String originalString = "baeldung"; String reversedString = StringUtils.reverse(originalString); assertEquals("gnudleab", reversedString);

Con el método reverseDelimited , los caracteres se invierten en grupos en lugar de individualmente:

String originalString = "www.baeldung.com"; String reversedString = StringUtils.reverseDelimited(originalString, '.'); assertEquals("com.baeldung.www", reversedString);

10. El método rotate ()

El método rotate () cambia circularmente los caracteres de una cadena en varias posiciones. El siguiente fragmento de código mueve todos los caracteres de la cadena "baeldung" cuatro posiciones a la derecha y verifica el resultado:

String originalString = "baeldung"; String rotatedString = StringUtils.rotate(originalString, 4); assertEquals("dungbael", rotatedString);

11. El método de la diferencia

El método de diferencia compara dos cadenas, devolviendo el resto de la segunda Cadena, comenzando desde la posición en la que es diferente de la primera. El siguiente fragmento de código compara dos cadenas: "Tutoriales de Baeldung" y "Cursos de Baeldung" en ambas direcciones y valida el resultado:

String tutorials = "Baeldung Tutorials"; String courses = "Baeldung Courses"; String diff1 = StringUtils.difference(tutorials, courses); String diff2 = StringUtils.difference(courses, tutorials); assertEquals("Courses", diff1); assertEquals("Tutorials", diff2);

12. Conclusión

Este tutorial presenta el procesamiento de cadenas en Apache Commons Lang 3 y repasa las principales API que podemos usar fuera de la clase de biblioteca StringUtils .

Como siempre, la implementación de todos los ejemplos y fragmentos de código dados anteriormente se puede encontrar en el proyecto GitHub.