Oui, il y a besoin d'une réponse de plus ici!
Toutes les solutions jusqu'à présent concernent le domaine plutôt limité de l' entrée canonique , à savoir: un seul caractère d'espacement entre les éléments (bien que la pointe du chapeau à @cherno pour au moins mentionner le problème). Mais je soumets que dans tous les scénarios, sauf les plus obscurs, le fractionnement de tous ces éléments devrait donner des résultats identiques:
string myStrA = "The quick brown fox jumps over the lazy dog";
string myStrB = "The quick brown fox jumps over the lazy dog";
string myStrC = "The quick brown fox jumps over the lazy dog";
string myStrD = " The quick brown fox jumps over the lazy dog";
String.Split
(dans l'une des saveurs présentées dans les autres réponses ici) ne fonctionne tout simplement pas bien, sauf si vous associez l' RemoveEmptyEntries
option à l'une de ces options:
myStr.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
myStr.Split(new char[] {' ','\t'}, StringSplitOptions.RemoveEmptyEntries)
Comme le montre l'illustration, l'omission de l'option donne quatre résultats différents (étiquetés A, B, C et D) par rapport au résultat unique des quatre entrées lorsque vous utilisez RemoveEmptyEntries
:
Bien sûr, si vous n'aimez pas utiliser les options, utilisez simplement l'alternative regex :-)
Regex.Split(myStr, @"\s+").Where(s => s != string.Empty)