Fractionner une chaîne en Java

1. Introduction

Le fractionnement des chaînes est une opération très fréquente; ce tutoriel rapide se concentre sur certaines des API que nous pouvons utiliser pour le faire simplement en Java.

2. String.split ()

Commençons par la bibliothèque principale - la classe String elle-même propose une méthode split () - qui est très pratique et suffisante pour la plupart des scénarios. Il divise simplement la chaîne donnée en fonction du délimiteur, renvoyant un tableau de chaînes .

Regardons quelques exemples. Nous allons commencer par séparer par une virgule:

String[] splitted = "peter,james,thomas".split(",");

Séparons par un espace:

String[] splitted = "car jeep scooter".split(" ");

Séparons également par un point:

String[] splitted = "192.168.1.178".split("\\.")

Divisons maintenant par plusieurs caractères - une virgule, un espace et un trait d'union via l'expression régulière:

String[] splitted = "b a, e, l.d u, n g".split("\\s+|,\\s*|\\.\\s*"));

3. StringUtils.split ()

Le package lang commun d'Apache fournit une classe StringUtils - qui contient une méthode split () sûre pour les valeurs nulles , qui se divise en utilisant un espace blanc comme délimiteur par défaut:

String[] splitted = StringUtils.split("car jeep scooter");

De plus, il ignore les espaces supplémentaires:

String[] splitted = StringUtils.split("car jeep scooter");

4. Splitter.split ()

Enfin, il existe également une belle API Splitter fluent dans Guava:

List resultList = Splitter.on(',') .trimResults() .omitEmptyStrings() .splitToList("car,jeep,, scooter"); 

5. Diviser et couper

Parfois, une chaîne donnée contient des espaces de début, de fin ou supplémentaires autour du délimiteur. Voyons comment nous pouvons gérer le fractionnement de l'entrée et le découpage des résultats en une seule fois.

Disons que nous avons ceci comme entrée:

String input = " car , jeep, scooter ";

Pour supprimer les espaces supplémentaires avant et / ou après le délimiteur, nous pouvons effectuer un fractionnement et un ajustement à l'aide de l'expression régulière:

String[] splitted = input.trim().split("\\s*,\\s*");

Ici, la méthode trim () supprime les espaces de début et de fin dans la chaîne d'entrée, et l'expression régulière elle-même gère les espaces supplémentaires autour du délimiteur.

Nous pouvons obtenir le même résultat en utilisant les fonctionnalités de Java 8 Stream :

String[] splitted = Arrays.stream(input.split(",")) .map(String::trim) .toArray(String[]::new);

6. Conclusion

String.split () suffit généralement. Cependant, pour les cas plus complexes, nous pouvons utiliser la classe StringUtils basée sur les langages communs d'Apache ou les API Guava propres et flexibles.

Et, comme toujours, le code de l'article est disponible à l'adresse over sur GitHub.