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

时间:2010-12-05 19:39:29

标签: string scala split scala-2.8

",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)

2 个答案:

答案 0 :(得分:12)

这是它的工作原理。请参阅here,它解释了Java的正则表达式版本,但它最终是一样的:

  

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

答案 1 :(得分:7)

行为是预期的。 String#split(Char)最终(通过StringLike#split(Char)String#split(String))调用documentedString#split(String, 0)

  

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

修改 - 如果您想要更好地控制拆分字符串,请查看Guava libraries中的Splitter

Splitter.on(',').split(",7-6-5-4-3-2-1,")