Oui, Il est nécessaire pour une réponse de plus ici!
Toutes les solutions jusqu'ici adresse le peu d'domaine de canonique d'entrée, à savoir: un seul caractère espace entre les éléments (mais coup de chapeau à @cherno pour au moins mentionner le problème).
Mais je soutiens que, dans l'ensemble, mais la plus obscure des scénarios, le fractionnement de la totalité de ces doit à 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 toutes les saveurs montré à travers les autres réponses ici) ne fonctionne tout simplement pas bien à moins que vous attachez de l' RemoveEmptyEntries
option avec l'un de ces:
myStr.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
myStr.Split(new char[] {' ','\t'}, StringSplitOptions.RemoveEmptyEntries)
Comme l'illustration révèle, en omettant l'option rendements quatre des résultats différents (appelées A, B, C, et D) contre le seul résultat de tous les quatre entrées lorsque vous utilisez RemoveEmptyEntries
:
Bien sûr, si vous n'aimez pas l'aide des options, il suffit d'utiliser la regex alternative :-)
Regex.Split(myStr, @"\s+").Where(s => s != string.Empty)