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);
}
}
}