Sí, ¡se necesita una respuesta más aquí!
Todas las soluciones hasta ahora abordan el dominio bastante limitado de la entrada canónica , a saber: un solo carácter de espacio en blanco entre los elementos (aunque la punta del sombrero a @cherno por al menos mencionar el problema). Pero lo presento en todos los escenarios menos oscuros, dividiendo todos estos debería producir resultados idénticos:
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
(en cualquiera de los sabores que se muestran en las otras respuestas aquí) simplemente no funciona bien a menos que adjunte el RemoveEmptyEntries
opción con cualquiera de estos:
myStr.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
myStr.Split(new char[] {' ','\t'}, StringSplitOptions.RemoveEmptyEntries)
Como revela la ilustración, omitir la opción produce cuatro resultados diferentes (etiquetados A, B, C y D) frente al resultado único de las cuatro entradas cuando se usa RemoveEmptyEntries
:
Por supuesto, si no te gusta usar opciones, solo usa la alternativa regex :-)
Regex.Split(myStr, @"\s+").Where(s => s != string.Empty)