Так, тут потрібна ще одна відповідь!
Всі рішення поки що стосуються досить обмеженої області канонічного введення , на кмітливість: єдиний символ пробілу між елементами (хоча кінчик капелюха до @cherno хоча б згадує про проблему). Але я стверджую, що в усіх, крім найбільш незрозумілих сценаріях, розділення всіх цих результатів має дати однакові результати:
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
(у будь-якому з ароматів, показаних в інших відповідях тут) просто не працює добре, якщо ви не приєднаєте RemoveEmptyEntries
параметр з будь-яким із цих:
myStr.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
myStr.Split(new char[] {' ','\t'}, StringSplitOptions.RemoveEmptyEntries)
Як показано на ілюстрації, опускання параметра дає чотири різні результати (з позначеннями A, B, C і D) порівняно з єдиним результатом з усіх чотирьох входів при використанні RemoveEmptyEntries
:
Звичайно, якщо вам не подобається використовувати параметри, просто скористайтеся альтернативою регулярного вираження :-)
Regex.Split(myStr, @"\s+").Where(s => s != string.Empty)