私は過去にこれに何度か遭遇し、ついにその理由を見つけることにしました。
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
を防ぐ必要がありますか。