Comment Diviser Une Chaîne en Java
Quelquefois, on doit diviser une chaîne en programmation. Nous suggestons les méthodes String.split (), StringTokenizer, et Pattern.compile ().
Diviser Une Chaîne en Java
public class StringSplitTest {
public static void main(String[] arg) {
String str = "Bienvenu:cher invité";
String[] arrOfStr = str.split(":");
for (String a: arrOfStr)
System.out.println(a);
}
}
La sortie pour cela sera comme le suivant:
Résultat
Bienvenu
cher invité
Remarque: Changez regex pour arriver au résultat différent:
E.g. pour ("e") regex le résultat sera comme cela:
Il y a beaucoup de moyens de diviser une chaîne en Java. La méthode la plus commune consiste à l’utilisation de la méthode split() qui est utilisée pour diviser une chaîne en un tableau de sous-chaînes et renvoie le nouveau tableau.
1. Utiliser String.split ()
La méthode de string split() rompt une chaîne donnée autour des correspondances de l’expression régulière donnée. Il y a deux variantes de la méthode split() en Java:
- String split publique(String regex)
Cette méthode prend une expression régulière comme paramètre et rompt la chaîne donnée autour des correspondances de cette expression régulière. Ici, la limite par défaut est 0.
Le paramètre pour cela est: regex (une expression régulière de délimitation).
Il retourne un tableau de chaînes calculé en divisant la chaîne donnée.
Exemple
W
lcom
:d
ar gu
st
- String split publique (String regex, int limit)
Les paramètres pour cela sont: regex (l'expression régulière de délimitation) et limit (contrôle le nombre de fois où le motif est appliqué et affecte donc la longueur du tableau résultant).
Cela retourne le tableau des chaînes comptées en divisant cette chaîne autour des correspondances de l'expression régulière donnée.
Exemple
public class StringSplitTest {
public static void main(String[] arg){
String str = "Hello:world:hello";
String split[] = str.split("e", 5);
for(String s:split)
System.out.println(s); } }
Le résultat de l'exemple donné sera comme ça:
Résultat
H
llo:world:h
llo
Remarque: Changez regex et limit pour avoir les différents résultats: e.g. (":", 2)-sortie sera {Hello, world:hello}; (":", -2)-{Hello, world, hello}, etc.
Voyons un autre exemple:
Exemple
public class StringSplitTest {
public static void main(String[] arg){
String str = "Que tu fais aujourd'hui?";
String split[] = str.split(" ", 0);
for(String s:split)
System.out.println(s); } }
Le résultat sera comme le suivant:
Résultat
Que
tu
fais
aujourd'hui?
Remarque: Changez regex et limit pour avoir un autre sortie: e.g. (" ", 2) – le résultat sera comme ça:
Résultat
Que
tu fais aujourd'hui?
Exemple
public class StringSplitTest {
public static void main(String args[]) {
String s = " ;String; String; String; String, String; String;;String;String; String; String; ;String;String;String;String"; //String[] strs = s.split("[,\\s\\;]");
String[] strs = s.split("[,\\;]");
System.out.println("Substrings length:"+strs.length);
for (int i=0; i < strs.length; i++) {
System.out.println("Str["+i+"]:"+strs[i]);
}
}
}
La sortie pour cela sera:
Résultat
Substrings length:17
Str[0]:
Str[1]:String
Str[2]: String
Str[3]: String
Str[4]: String
Str[5]: String
Str[6]: String
Str[7]:
Str[8]:String
Str[9]:String
Str[10]: String
Str[11]: String
Str[12]:
Str[13]:String
Str[14]:String
Str[15]:String
Str[16]:String
2. Utiliser StringTokenizer
En Java, la chaîne tokenizer permet de casser une chaîne en jetons. Vous pouvez également obtenir le nombre de jetons à l'intérieur d'un objet chaîne.
Exemple
import java.util.StringTokenizer;
public class StringTokenizerExample {
public static void main(String[] args) {
StringTokenizer st =
new StringTokenizer("A StringTokenizer sample");
// get how many tokens are inside st object
System.out.println("Tokens count: " + st.countTokens());
// iterate st object to get more tokens from it
while (st.hasMoreElements()) {
String token = st.nextElement().toString();
System.out.println("Token = " + token);
}
}
}
Résultat
Tokens count: 3
Token = A
Token = StringTokenizer
Token = sample
Remarque: Vous pouvez spécifier le délimiteur utilisé pour diviser la chaîne. Dans l'exemple donné, nous avons défini le délimiteur comme un espace (”).
Il est également possible d'utiliser StringTokenizer avec plusieurs délimiteurs.
Exemple
import java.util.StringTokenizer;
public class StringTokenizerExample {
public static void main(String[] args) {
String url = "http://www.w3docs.com/learn-javascript.html";
StringTokenizer multiTokenizer = new StringTokenizer(url, "://.-");
while (multiTokenizer.hasMoreTokens())
{
System.out.println(multiTokenizer.nextToken());
}
}
}
Résultat
http
www
w3docs
com
learn
javascript
html
Remarque: Dans l’exemple ci-dessus les délimiteurs :, //, ., - sont utilisés.
3. Utiliser Pattern.compile ()
Cette méthode divise la séquence d'entrée donnée autour des correspondances du modèle. Le paramètre pour cela est: input - la séquence de caractères à diviser.
Il retourne le tableau de chaînes calculé en divisant l'entrée autour des correspondances du motif.
Exemple
import java.util.regex.Pattern;
public class PatternDemo {
private static String REGEX = ":";
private static String INPUT = "bonjour:cher:invité";
public static void main(String[] args) {
Pattern pattern = Pattern.compile(REGEX);
String[] result = pattern.split(INPUT);
for(String data:result){
System.out.println(data);
}
}
}
Cela va produire le résultat suivant:
Résultat
bonjour
cher
invité