",7-6-5-4-3-2-1,".split(',')
应该返回什么?
好像回来了
blank string
7-6-5-4-3-2-1
即。两个字符串。我希望有一个或三个字符串 - 两端都是空字符串,或者只是','s之间的字符串。
我错了吗?对当前的行为有一个很好的解释吗?
编辑:
行。所以是的,我有错误的期望,不,除了Java这样的方式之外没有其他好的解释:)。感谢。
EDIT2:
您可以使用split(",", -1)
获得所需的行为
(Scala 2.8.1)
答案 0 :(得分:12)
这是它的工作原理。请参阅here,它解释了Java的正则表达式版本,但它最终是一样的:
因此,结尾的空字符串不包含在结果数组中。
答案 1 :(得分:7)
行为是预期的。 String#split(Char)
最终(通过StringLike#split(Char)
和String#split(String)
)调用documented的String#split(String, 0)
:
[...]模式将被应用尽可能多次,数组可以有任何长度,并且尾随空字符串将被丢弃
修改 - 如果您想要更好地控制拆分字符串,请查看Guava libraries中的Splitter
。
Splitter.on(',').split(",7-6-5-4-3-2-1,")