588 votes

Comment découper une chaîne avec des caractères espaces comme des séparateurs ?

Quel modèle regex serait nécessaire de passer à la méthode java.lang.String.split() pour fractionner une chaîne contenant tous les caractères d’espace blanc (' ', « \t », « \n », etc.) comme des séparateurs ?

998voto

Henrik Paul Points 22787

Quelque chose dans les lignes de

myString.split("\\s+");

ce groupe a pour tous les espaces comme un séparateur... donc, si j'ai de la chaîne "Hello[espace][tab]Monde", ce qui devrait produire les chaînes de caractères "Bonjour" et "Monde" et omettre l'espace vide entre l'espace et la tabulation.

Comme VonC souligné, la barre oblique inverse devrait être échappé, parce que Java serait d'abord essayer d'échapper à la chaîne d'un caractère spécial, et envoyer que pour être analysé. Ce que vous voulez, c'est le littéral "\s", ce qui signifie, vous avez besoin de passer "\\s". Il peut être un peu déroutant.

L' \\s est équivalent à [ \\t\\n\\x0B\\f\\r]

91voto

glenatron Points 5897

Dans la plupart des regex dialectes, il y a un ensemble de pratiques à caractère résumés que vous pouvez utiliser pour ce genre de chose - ces sont bonnes à rappeler:

\w - Correspond à tout caractère de mot.

\W - Correspond à n'importe quel nonword caractère.

\s Correspond à tout caractère d'espace blanc.

\S Correspond à rien, mais des espaces blancs.

\d Correspond à un chiffre.

\D Correspond à rien, sauf les chiffres.

Une recherche pour "Regex Cheatsheets" devrait vous récompenser avec un tas d'utiles synthèses.

69voto

Mike Manard Points 396

Pour obtenir ce travail, j’ai eu à faire ce qui suit :

37voto

VonC Points 414372

« \s+ » devrait faire l’affaire

9voto

Felix Scheffer Points 56

Apache Commons Lang a une méthode pour diviser une chaîne avec les espaces comme des séparateurs :

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X