StringSplitOptions.RemoveEmptyEntries не работает так, как рекламируется

Я сталкивался с этим несколько раз в прошлом и, наконец, решил выяснить, почему.

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должно предотвратить.

28
задан Vadim Ovchinnikov 23 April 2018 в 09:20
поделиться