Réponses:
Quelque chose dans les lignes de
myString.split("\\s+");
Cela regroupe tous les espaces blancs comme délimiteur.
Donc, si j'ai la chaîne:
"Hello[space][tab]World"
Cela devrait produire les chaînes "Hello"
et "World"
et omettre l'espace vide entre le [space]
et le [tab]
.
Comme VonC a souligné, la barre oblique inverse doit être échappé, parce que Java serait d' abord essayer d'échapper à la chaîne à un caractère spécial, et envoyer ce à analyser. Ce que vous voulez, c'est le littéral "\s"
, ce qui signifie que vous devez passer "\\s"
. Cela peut devenir un peu déroutant.
L' \\s
équivalent à [ \\t\\n\\x0B\\f\\r]
.
trim()
abord: trim().split("\\s++")
- sinon, par exemple, le fractionnement de `abc` émettra d'abord deux chaînes vides.
"\\\\s"
?
Dans la plupart des dialectes d'expression régulière, il existe un ensemble de résumés de caractères pratiques que vous pouvez utiliser pour ce genre de chose - ce sont de bons à retenir:
\w
- Correspond à n'importe quel caractère de mot.
\W
- Correspond à tout caractère non mot.
\s
- Correspond à tout caractère d'espace blanc.
\S
- Correspond à tout sauf aux espaces blancs.
\d
- Correspond à n'importe quel chiffre.
\D
- Correspond à tout sauf aux chiffres.
Une recherche de "Regex Cheatsheets" devrait vous récompenser avec beaucoup de résumés utiles.
Pour que cela fonctionne en Javascript , j'ai dû faire ce qui suit:
myString.split(/\s+/g)
"\\ s +" devrait faire l'affaire
Vous pouvez également avoir un espace insécable UniCode xA0 ...
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
Apache Commons Lang a une méthode pour diviser une chaîne avec des caractères blancs comme délimiteurs:
StringUtils.split("abc def")
Cela pourrait être plus facile à utiliser qu'un modèle d'expression régulière.
Puisqu'il s'agit d'une expression régulière, et je suppose que u ne voudrait pas non plus de caractères non alphanumériques comme des virgules, des points, etc. qui pourraient être entourés de blancs (par exemple, "un, deux" devrait donner [un] [deux]), ça devrait être:
myString.split(/[\s\W]+/)
vous pouvez fractionner une chaîne par saut de ligne à l'aide de l'instruction suivante:
String textStr[] = yourString.split("\\r?\\n");
vous pouvez fractionner une chaîne par espace en utilisant l'instruction suivante:
String textStr[] = yourString.split("\\s+");
String str = "Hello World";
String res[] = str.split("\\s+");
Étudiez ce code .. bonne chance
import java.util.*;
class Demo{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.print("Input String : ");
String s1 = input.nextLine();
String[] tokens = s1.split("[\\s\\xA0]+");
System.out.println(tokens.length);
for(String s : tokens){
System.out.println(s);
}
}
}