Java - Comment diviser une chaîne
Pour diviser une chaîne, utiliseString.split(regex)
. Passez en revue les exemples suivants:
String phone = "012-3456789"; String[] output = phone.split("-"); System.out.println(output[0]); System.out.println(output[1]);
Sortie
012 3456789
Note
Cesplit (regex)
prend une expression régulière comme argument, n'oubliez pas d'échapper auxregex
special characters, comme point / point.
1. Fractionner une période / un point
Le point / point est un caractère spécial dans regex, vous devez l'échapper soit avec un double backlash\.
, soit en utilisant la méthodePattern.quote
.
TestSplit.java
package com.example.test import java.util.regex.Pattern; public class TestSplit { public static void main(String[] args) { String test = "abc.def.123"; String[] output = test.split("\\."); //alternative //String[] output = test.split(Pattern.quote(".")); System.out.println(output[0]); System.out.println(output[1]); System.out.println(output[2]); } }
Sortie
abc def 123
Quelques vérifications courantes avant la séparation.
TestSplit.java
package com.example.test import java.util.regex.Pattern; public class TestSplit { public static void main(String[] args) { String test = "abc.def.123"; if(test.contains(".")){ String[] output = test.split("\\."); if(output.length!=3){ throw new IllegalArgumentException(test + " - invalid format!"); }else{ System.out.println(output[0]); System.out.println(output[1]); System.out.println(output[2]); } }else{ throw new IllegalArgumentException(test + " - invalid format!"); } } }
2. Exemple de StringTokenizer
Autrefois, les développeurs Java aimaient utiliser la classeStringTokenizer
pour diviser une chaîne. En effet, la classeStringTokenizer
est disponible depuis JDK 1.0 et la classeString.split()
est disponible depuis JDK 1.4
TestSplit.java
package com.example.test import java.util.StringTokenizer; public class TestSplit { public static void main(String[] args) { String test = "abc.def.123"; StringTokenizer token = new StringTokenizer(test, "."); while (token.hasMoreTokens()) { System.out.println(token.nextToken()); } } }
Sortie
abc def 123
Note
CeStringTokenizer
est une classe héritée, conservée pour des raisons de compatibilité, l'utilisation est déconseillée! Veuillez utiliserstring.split()
.