Traitement des chaînes avec Apache Commons Lang 3

Traitement des chaînes avec Apache Commons Lang 3

1. Vue d'ensemble

La bibliothèqueApache Commons Lang 3 prend en charge la manipulation des classes principales des API Java. Cette prise en charge inclut des méthodes de traitement des chaînes, des nombres, des dates, de la simultanéité, de la réflexion d’objets, etc.

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

2. Dépendance 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èquehere.

3. StringUtils

La classeStringUtils fournit des méthodes pour les opérations de sécuriténull sur les chaînes.

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

4. La méthodecontainsAny

La méthodecontainsAny vérifie si unString donné contient un caractère dans le jeu de caractères donné. Cet ensemble de caractères peut être passé sous forme de varargsString ouchar.

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

String string = "example.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éthodecontainsIgnoreCase

La méthodecontainsIgnoreCase vérifie si unString donné contient un autreString d'une manière insensible à la casse.

Le fragment de code suivant vérifie que leString “example.com” comprend“example” lorsque les majuscules et minuscules sont ignorées:

String string = "example.com";
boolean contained = StringUtils.containsIgnoreCase(string, "example");

assertTrue(contained);

6. La méthodecountMatches

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

Ce qui suit est une démonstration de cette méthode, confirmant que‘w' apparaît quatre fois et“com” fait deux fois dans lesString“welcome to www.example.com”:

String string = "welcome to www.example.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éthodesappendIfMissing etappendIfMissingIgnoreCase ajoutent un suffixe à la fin d'unString donné s'il 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éthodesprependIfMissing etprependIfMissingIgnoreCase ajoutent un préfixe au début d'unString donné s'il ne commence par aucun des préfixes transmis.

Dans l'exemple suivant, les méthodesappendIfMissing etprependIfMissing sont utilisées pour ajouter un suffixe et un préfixe auxString “example.com” sans que ces affixes soient répétés:

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

assertEquals("example.com", stringWithSuffix);
assertEquals("www.example.com", stringWithPrefix);

8. Méthode de changement de cas

La classeString définit déjà des méthodes pour convertir tous les caractères d'unString en majuscules ou minuscules. Cette sous-section illustre uniquement l'utilisation de méthodes modifiant la casse d'unString par d'autres moyens, y comprisswapCase,capitalize etuncapitalize.

La méthodeswapCase permute la casse d'unString, changeant les majuscules en minuscules et les minuscules en majuscules:

String originalString = "example.COM";
String swappedString = StringUtils.swapCase(originalString);

assertEquals("example.com", swappedString);

La méthodecapitalize convertit le premier caractère d'unString donné en majuscules, laissant tous les caractères restants inchangés:

String originalString = "example";
String capitalizedString = StringUtils.capitalize(originalString);

assertEquals("example", capitalizedString);

La méthodeuncapitalize convertit le premier caractère desString donnés en minuscules, laissant tous les caractères restants inchangés:

String originalString = "example";
String uncapitalizedString = StringUtils.uncapitalize(originalString);

assertEquals("example", uncapitalizedString);

9. Méthode d'inversion

La classeStringUtils définit deux méthodes pour inverser les chaînes:reverse etreverseDelimited. La méthodereverse réorganise tous les caractères d'unString dans l'ordre opposé, tandis que la méthodereverseDelimited 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“example” et valide le résultat:

String originalString = "example";
String reversedString = StringUtils.reverse(originalString);

assertEquals("gnudleab", reversedString);

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

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

assertEquals("com.example.www", reversedString);

10. La méthoderotate()

La méthoderotate() décale circulairement les caractères d'unString d'un certain nombre de positions. Le fragment de code ci-dessous déplace tous les caractères desString “example”de quatre positions vers la droite et vérifie le résultat:

String originalString = "example";
String rotatedString = StringUtils.rotate(originalString, 4);

assertEquals("dungbael", rotatedString);

11. La méthodedifference

La méthodedifference compare deux chaînes, renvoyant le reste des secondesString, à partir de la position où elle est différente de la première. Le fragment de code suivant compare deuxStrings: “example Tutorials” et“example Courses” dans les deux sens et valide le résultat:

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

assertEquals("Courses", diff1);
assertEquals("Tutorials", diff2);

12. Conclusion

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

Comme toujours, l'implémentation de tous les exemples et extraits de code donnés ci-dessus peut être trouvée dansthe GitHub project.