Да, здесь нужен еще один ответ!
Пока что все решения направлены на довольно ограниченную область канонического ввода , а именно: один символ пробела между элементами (хотя на кону @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)