Comment diviser une chaîne en Java : guide complet pour débutants et experts

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

« Aidez-moi, je n'arrive pas à diviser une chaîne ! » — l'histoire d'un problème

\n\n

Imaginez : vous écrivez en Java un analyseur de logs, vous traitez un fichier CSV ou vous voulez simplement découper une saisie utilisateur en mots. Et là — stop. Comment faire ? Si vous avez déjà cherché sur Google « How do I split a string in Java », vous savez : cette question sur Stack Overflow a recueilli des centaines de milliers de vues. Non pas parce que les programmeurs Java sont paresseux, mais parce que split() est un outil puissant, mais avec des pièges cachés.

\n\n

Dans cet article, nous allons détailler la division de chaînes en Java de A à Z. Vous apprendrez comment fonctionne la méthode split(), quelles surprises réservent les expressions régulières, et comment éviter les pièges qui guettent un débutant sur deux. C'est parti !

\n\n

La méthode split() : votre outil principal

\n\n

La classe String en Java propose deux variantes surchargées de la méthode split() :

\n\n
public String[] split(String regex)\npublic String[] split(String regex, int limit)
\n\n

La première variante prend une expression régulière et retourne un tableau de chaînes. La seconde fait la même chose, mais avec une limite sur le nombre de parties. Cela semble simple ? Regardons des exemples.

\n\n

Exemple de base : division par espace

\n\n
public class SplitExample {\n    public static void main(String[] args) {\n        String text = "Java divise les chaînes facilement";\n        String[] words = text.split(" ");\n        \n        for (String word : words) {\n            System.out.println(word);\n        }\n    }\n}
\n\n

Sortie :

\n
Java\ndivise\nles\nchaînes\nfacilement
\n\n

Ça marche ? Ça marche. Mais que faire si vous avez plusieurs espaces consécutifs ? Alors des chaînes vides apparaîtront dans le tableau. Désagréable, n'est-ce pas ?

\n\n

Division d'une chaîne en Java par virgule (CSV)

\n\n

L'une des tâches les plus courantes est de diviser une chaîne en Java par virgule. Supposons que vous ayez une chaîne CSV :

\n\n
String csv = "pomme,poire,banane,orange";\nString[] fruits = csv.split(",");\n\nfor (String fruit : fruits) {\n    System.out.println(fruit.trim()); // trim() enlève les espaces superflus\n}
\n\n

Sortie :

\n
pomme\npoire\nbanane\norange
\n\n

Notez que nous avons ajouté trim(), car dans les données réelles, il y a souvent des espaces après la virgule. Sans cela, vous obtiendrez " pomme" avec un espace en tête — et vous vous demanderez pourquoi les chaînes ne correspondent pas.

\n\n

Expressions régulières : magie et douleur

\n\n

La méthode split() accepte une expression régulière. Cela offre une grande flexibilité, mais nécessite de la prudence. Examinons des scénarios courants.

\n\n

Division par point

\n\n

Vous voulez découper une adresse IP "192.168.1.1" ? Le code naïf str.split(".") ne fonctionnera pas. Pourquoi ? Parce que le point dans les expressions régulières est un caractère spécial signifiant « n'importe quel caractère ». En conséquence, vous obtiendrez un tableau de chaînes vides.

\n\n

La bonne solution est d'échapper le point :

\n\n
String ip = "192.168.1.1";\nString[] parts = ip.split("\\\\."); // Double backslash !\n\nfor (String part : parts) {\n    System.out.println(part);\n}\n// Sortie : 192 168 1 1
\n\n

Souvenez-vous : en Java, pour échapper dans les regex, on utilise un double backslash \\\\. Un simple \\ est un caractère d'échappement pour la chaîne, et le double est déjà pour la regex.

\n\n

Division par plusieurs séparateurs

\n\n

Que faire si la chaîne contient à la fois des virgules, des points-virgules et des espaces ? Utilisez une classe de caractères entre crochets :

\n\n
String messy = "pomme;poire,banane orange";\nString[] items = messy.split("[;,\\\\s]+"); // ; ou , ou caractères d'espacement\n\nfor (String item : items) {\n    System.out.println(item);\n}\n// Sortie : pomme poire banane orange
\n\n

Le signe + signifie « un ou plusieurs » — cela garantit qu'une séquence de séparateurs ne crée pas

Blogs

Book Recommendations