Traitement des chaînes avec Apache Commons Lang 3

1. Vue d'ensemble

La bibliothèque Apache Commons Lang 3 prend en charge la manipulation des classes principales des API Java. Cette prise en charge comprend des méthodes de gestion des chaînes, des nombres, des dates, de la concurrence, de la réflexion d'objet, etc.

En plus de fournir une introduction générale à la bibliothèque, ce didacticiel présente les méthodes de la classe StringUtils qui est utilisée pour la manipulation des instances String .

2. Dépendance de Maven

Pour utiliser la bibliothèque Commons Lang 3, extrayez-la simplement du référentiel central Maven en utilisant la dépendance suivante:

 org.apache.commons commons-lang3 3.5 

Vous pouvez trouver la dernière version de cette bibliothèque ici.

3. StringUtils

La classe StringUtils fournit des méthodes pour les opérations null -safe sur les chaînes.

De nombreuses méthodes de cette classe ont des méthodes correspondantes définies dans la classe java.lang.String , qui ne sont pas null -safe. Cependant, cette section se concentrera plutôt sur plusieurs méthodes qui n'ont pas d'équivalents dans la classe String .

4. La méthode containsAny

La méthode containsAny vérifie si une chaîne donnée contient un caractère dans le jeu de caractères donné. Cet ensemble de caractères peut être passé sous la forme d'une chaîne ou d'un char varargs.

Le fragment de code suivant illustre l'utilisation de deux versions surchargées de cette méthode avec vérification des résultats:

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. La méthode containsIgnoreCase

La méthode containsIgnoreCase vérifie si une chaîne donnée contient une autre chaîne sans tenir compte de la casse.

Le fragment de code suivant vérifie que la chaîne «baeldung.com» comprend «BAELDUNG» lorsque les majuscules et les minuscules sont ignorées:

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

6. La méthode countMatches

La méthode counterMatches compte le nombre de fois qu'un caractère ou une sous-chaîne apparaît dans une chaîne donnée .

Ce qui suit est une démonstration de cette méthode, confirmant que «w» apparaît quatre fois et «com» fait deux fois dans la chaîne «welcome to 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éthode d'ajout et de mise en attente

Les méthodes appendIfMissing et appendIfMissingIgnoreCase ajoutent un suffixe à la fin d'une chaîne donnée si elle ne se termine pas déjà par l'un des suffixes transmis de manière sensible à la casse et insensible respectivement.

De même, les méthodes prependIfMissing et prependIfMissingIgnoreCase ajoutent un préfixe au début d'une chaîne donnée si elle ne commence par aucun des préfixes transmis.

Dans l'exemple suivant, les méthodes appendIfMissing et prependIfMissing sont utilisées pour ajouter un suffixe et un préfixe à la chaîne «baeldung.com» sans que ces affixes soient répétés:

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éthode de changement de cas

La classe String définit déjà des méthodes pour convertir tous les caractères d'un String en majuscules ou minuscules. Cette sous-section illustre uniquement l'utilisation de méthodes modifiant la casse d'une chaîne d'autres manières, notamment swapCase , capitalize et unapitalize .

La méthode swapCase permute la casse d'une chaîne, en changeant les majuscules en minuscules et les minuscules en majuscules:

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

La méthode capitalize convertit le premier caractère d'une chaîne donnée en majuscules, laissant tous les caractères restants inchangés:

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

La méthode uncapitalize convertit le premier caractère de la chaîne donnée en minuscules, laissant tous les caractères restants inchangés:

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

9. Méthode d'inversion

La classe StringUtils définit deux méthodes pour inverser les chaînes: reverse et reverseDelimited . La méthode inverse réorganise tous les caractères d'une chaîne dans l'ordre opposé, tandis que la méthode reverseDelimited réorganise les groupes de caractères, séparés par un délimiteur spécifié.

Le fragment de code suivant inverse la chaîne «baeldung» et valide le résultat:

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

Avec la méthode reverseDelimited , les caractères sont inversés en groupes plutôt qu'individuellement:

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

10. La méthode rotate ()

La méthode rotate () décale circulairement les caractères d'une chaîne d' un certain nombre de positions. Le fragment de code ci-dessous déplace tous les caractères de la chaîne «baeldung» de quatre positions vers la droite et vérifie le résultat:

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

11. La méthode de la différence

La méthode de différence compare deux chaînes, renvoyant le reste de la deuxième chaîne, à partir de la position où elle est différente de la première. Le fragment de code suivant compare deux chaînes: «Tutoriels Baeldung» et «Cours Baeldung» dans les deux sens et valide le résultat:

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. Conclusion

Ce didacticiel présente le traitement des chaînes dans Apache Commons Lang 3 et présente les principales API que nous pouvons utiliser en dehors de la classe de bibliothèque StringUtils .

Comme toujours, l'implémentation de tous les exemples et extraits de code donnés ci-dessus se trouve dans le projet GitHub.