Me he encontrado con esto varias veces en el pasado y finalmente he decidido averiguar por qué.StringSplitOptions.RemoveEmptyEntries no funciona según lo anunciado
StringSplitOptions.RemoveEmptyEntries sugeriría que elimine las entradas vacías.
¿Por qué esta prueba falla?
var tags = "One, Two, , Three, Foo Bar, , Day , ";
var tagsSplit = tags.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Trim());
tagsSplit.ShouldEqual(new string[] {
"One",
"Two",
"Three",
"Foo Bar",
"Day"
});
El resultado:
Values differ at index [2]
Expected string length 5 but was 0. Strings differ at index 0.
Expected: "Three"
But was: <string.Empty>
Así se produce un error porque en lugar de "Tres", que tiene una cadena vacía - exactamente lo StringSplitOptions.RemoveEmptyEntries deben evitar.
Esto tratará incorrectamente la "Barra Foo" en la entrada del OP como dos elementos separados. – Giles