【发布时间】:2014-03-11 01:40:11
【问题描述】:
我注意到如果我 Split 一个只包含空格的空格字符串,它会返回意外的结果。考虑一下:
var spaces = string.Join("",Enumerable.Repeat(" ", 10));
int lenght = spaces.Length; // 10
var result = spaces.Split(' ');
lenght = result.Length; // 11
我不明白为什么result.Length 返回11 空字符串。而我的输入字符串中有10 空格?我还尝试了一封信,例如"a",但这没有任何区别:
var letters = string.Join("",Enumerable.Repeat("a", 10));
int lenght = letters.Length; // 10
var result = letters.Split('a');
lenght = result.Length; // 11
在documentation 中写道:
如果两个分隔符相邻,或者在该实例的开头或结尾找到分隔符,则对应的数组元素包含 Empty。
所以我明白为什么我得到空字符串但我不明白那个额外的元素来自哪里?
文档中有一个例子:
var input = "42..12..19";
var result = input.Split('.');
返回五个结果,其中两个是空字符串。不是三个。
那么这是默认和预期的行为,还是错误或什么?
【问题讨论】: