【问题标题】:What should ",7-6-5-4-3-2-1,".split(',') return?",7-6-5-4-3-2-1,".split(',') 应该返回什么?
【发布时间】:2011-05-20 15:09:57
【问题描述】:

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

好像又回来了

  blank string
  7-6-5-4-3-2-1

即。两个字符串。我希望有一个或三个字符串 - 两端都是空白字符串,或者只是 ','s 之间的字符串。

我错了吗?对当前的行为有很好的解释吗?

编辑:

好的。所以是的,我有错误的期望,不,除了 Java 以这种方式工作之外没有很好的解释:)。谢谢。

EDIT2:

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

【问题讨论】:

    标签: string scala split scala-2.8


    【解决方案1】:

    这种行为是预期的。 String#split(Char) 最终(通过StringLike#split(Char)String#split(String))调用Java String#split(String, 0),即documented

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 请注意,您可以使用 s.split(",", -1) 导致包含尾随空字符串
      猜你喜欢
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 2022-10-08
      • 1970-01-01
      • 2011-09-08
      • 2018-03-14
      • 2021-02-15
      • 1970-01-01
      相关资源
      最近更新 更多