Ja, hier ist noch eine Antwort erforderlich!
Alle bisherigen Lösungen befassen sich mit dem eher begrenzten Bereich der kanonischen Eingabe : einem einzelnen Leerzeichen zwischen den Elementen (obwohl @cherno die Spitze des Hutes ist, um zumindest das Problem zu erwähnen). Aber ich vor , dass in allen , aber die dunkelsten Szenarien, Splitting alle diese sollten identische Ergebnisse liefern:
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 einer der in den anderen Antworten hier gezeigten Geschmacksrichtungen) funktioniert einfach nicht gut, es sei denn, Sie fügen die RemoveEmptyEntries
Option mit einer der folgenden Optionen hinzu:
myStr.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
myStr.Split(new char[] {' ','\t'}, StringSplitOptions.RemoveEmptyEntries)
Wie die Abbildung zeigt, führt das Weglassen der Option zu vier verschiedenen Ergebnissen (mit A, B, C und D bezeichnet) im Vergleich zum Einzelergebnis aller vier Eingaben, wenn Sie Folgendes verwenden RemoveEmptyEntries
:
Wenn Sie keine Optionen verwenden möchten, verwenden Sie einfach die Regex-Alternative :-)
Regex.Split(myStr, @"\s+").Where(s => s != string.Empty)