StringSplitOptions.RemoveEmptyEntries并没有按照宣传的那样工作。

8 浏览
0 Comments

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"
});

结果是:

  在索引[2]处值不同
  预期字符串长度为5,但实际长度为0。在索引0处字符串不同。
  预期值:"Three"
  实际值:""

所以它失败是因为我们得到了一个空字符串,而不是预期的"Three",这正是StringSplitOptions.RemoveEmptyEntries应该避免的。

0