Sì, c'è bisogno di un'altra risposta qui!
Tutte le soluzioni finora affrontano il dominio piuttosto limitato dell'input canonico , vale a dire: un singolo carattere di spazio bianco tra gli elementi (anche se punta del cappello a @cherno per almeno menzionare il problema). Ma sostengo che in tutti gli scenari tranne quelli più oscuri, suddividere tutti questi dovrebbe produrre risultati identici:
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
(in uno dei gusti mostrati nelle altre risposte qui) semplicemente non funziona bene a meno che non si colleghi l' RemoveEmptyEntries
opzione con uno di questi:
myStr.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
myStr.Split(new char[] {' ','\t'}, StringSplitOptions.RemoveEmptyEntries)
Come mostra l'illustrazione, omettendo l'opzione si ottengono quattro risultati diversi (etichettati A, B, C e D) rispetto al risultato singolo di tutti e quattro gli input quando si utilizza RemoveEmptyEntries
:
Naturalmente, se non ti piace usare le opzioni, usa l'alternativa regex :-)
Regex.Split(myStr, @"\s+").Where(s => s != string.Empty)