Quel modèle regex aurais - je besoin de passer à java.lang.String.split()
diviser une chaîne en un tableau de sous - chaînes en utilisant tous les caractères (espaces blancs ' '
, '\t'
, '\n'
, etc.) comme délimiteurs?
la source
Quel modèle regex aurais - je besoin de passer à java.lang.String.split()
diviser une chaîne en un tableau de sous - chaînes en utilisant tous les caractères (espaces blancs ' '
, '\t'
, '\n'
, etc.) comme délimiteurs?
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.
la source
Pour que cela fonctionne en Javascript , j'ai dû faire ce qui suit:
la source
"\\ s +" devrait faire l'affaire
la source
Vous pouvez également avoir un espace insécable UniCode xA0 ...
la source
la source
Apache Commons Lang a une méthode pour diviser une chaîne avec des caractères blancs comme délimiteurs:
http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)
Cela pourrait être plus facile à utiliser qu'un modèle d'expression régulière.
la source
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:
la source
vous pouvez fractionner une chaîne par saut de ligne à l'aide de l'instruction suivante:
vous pouvez fractionner une chaîne par espace en utilisant l'instruction suivante:
la source
la source
Étudiez ce code .. bonne chance
la source