"".Split(',') 的定义

Definition of "".Split(',')

如果我有一个包含以逗号分隔的事物列表的字符串并在逗号处拆分它,我会得到一个数组:

"A,B,C,D".Split(',') = ["A","B","C","D"]

如果我有一个没有逗号的字符串,它就是一个单元素数组:

"A".Split(',') = ["A"]

但是当您尝试拆分空字符串时可能发生的情况有两种可能的定义:

"".Split(',') = [""]
"".Split(',') = []

根据我有限的经验,后者更有意义,但我还没有看到任何语言实现它;共同的规范是前者。这只是 inherited/legacy 行为还是我错过了第一种可能性背后的更深层意义?

除非你使用 StringSplitOptions.RemoveEmptyEntries,否则它会给你空字符串。

所以如何使用它取决于我们。

这可能值得商榷,但我认为第一个选项应该是正确的,因为数组值是两个分隔符(当然还有字符串边距)之间的字符串的一部分。

所以基本上你解析字符串直到到达第一个分隔符,设置值,继续解析(并重复)。

这样,如果您解析一个没有分隔符的字符串,数组的第一个元素就是该字符串。 (你的 "A".split() 案例)。外推到空字符串,数组的第一个元素应该是空字符串。这确保了结果的一致性(结果总是至少包含一个元素的数组)。

所以...我不认为这是遗留问题,我认为这是它应该的工作方式。