Я сталкивался с этим несколько раз в прошлом и, наконец, решил выяснить, почему.
StringSplitOptions.RemoveEmptyEntries
предполагает, что он удаляет пустые записи.
Так почему же этот тест не проходит?
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"
});
Результат:
Values differ at index [2]
Expected string length 5 but was 0. Strings differ at index 0.
Expected: "Three"
But was: <string.Empty>
Таким образом, это терпит неудачу, потому что вместо "Three"
у нас есть пустая строка — именно то, что StringSplitOptions.RemoveEmptyEntries
должно предотвратить.