Quel modèle d'expressions rationnelles dois-je transmettre à la méthode java.lang.String.split()
pour diviser une chaîne en un tableau de sous-chaînes en utilisant tous les caractères d'espacement (' ; ' ;, '\t' ;, '\n' ;, etc.) comme délimiteurs ?
Quelque chose du genre
myString.split("\\s+");
Cela regroupe tous les espaces blancs comme délimiteur.
Donc si j'ai la chaîne :
"Bonjour [espace][tab]Monde"
Cela devrait donner les chaînes "Hello" et "World" et omettre l'espace vide entre le "space" et le "tab".
Comme VonC l'a fait remarquer, la barre oblique inversée doit être échappée, car Java essaierait d'abord d'échapper la chaîne de caractères en un caractère spécial, et enverrait ceci pour être analysé. Ce que vous voulez, c'est le caractère littéral "\s"
, ce qui signifie que vous devez passer "\s"
. Cela peut être un peu confus.
Le s
est équivalent à `[ \t\\n\\N\N\N\N\N\N\N\N\N\N\N ]``
Dans la plupart des dialectes regex, il existe un ensemble de résumés de caractères pratiques que vous pouvez utiliser pour ce genre de choses - il est bon de s'en souvenir :
W
- Correspond à n'importe quel caractère de mot.
\W
- Correspond à n'importe quel caractère non-mot.
\s
- Correspond à tout caractère d'espace blanc.
\S
- Correspond à tout ce qui n'est pas un espace blanc.
\d
- Correspond à n'importe quel chiffre.
\D
- Correspond à tout sauf aux chiffres.
Une recherche sur "Regex Cheatsheets" ; devrait vous récompenser avec tout un tas de résumés utiles.