什么应该",7-6-5-4-3-2-1".分裂(',')回归?

The*_*aul 6 string split scala scala-2.8

应该",7-6-5-4-3-2-1,".split(',')返回什么?

它似乎回归了

  blank string
  7-6-5-4-3-2-1
Run Code Online (Sandbox Code Playgroud)

即.两个字符串.我期待一个或三个字符串 - 两端都是空字符串,或者只是','之间的字符串.

我错了吗?目前的行为有一个很好的解释吗?

编辑:

好.所以是的,我有错误的期望,不,除了Java这样的方式之外没有其他好的解释:).谢谢.

EDIT2:

您可以使用split(",", -1) (Scala 2.8.1)获得所需的行为

Dan*_*ral 12

这是它的工作原理.看到这里,它解释了Java的正则表达式版本,但它最终是一样的:

因此,结尾的空字符串不包含在结果数组中.

  • 请注意,您可以使用`s.split(",", - 1)`来包含尾随空字符串 (4认同)

Ben*_*ngs 7

这种行为是可以预见的.String#split(Char)最终(通过StringLike#split(Char)String#split(String))调用了Java String#split(String, 0)记录:

[...]模式将被应用尽可能多次,数组可以具有任何长度,并且尾随空字符串将被丢弃

编辑 -如果你想在拆分字符串的更多控制,看Splitter番石榴库.

Splitter.on(',').split(",7-6-5-4-3-2-1,")
Run Code Online (Sandbox Code Playgroud)