【问题标题】:How to split string with trailing empty strings in result?如何用结果中的尾随空字符串拆分字符串?
【发布时间】:2023-02-10 16:47:39
【问题描述】:

我对 Scala 字符串拆分行为有点困惑,因为它不能始终如一地工作并且缺少一些列表元素。例如,如果我有一个包含 4 列和 1 个缺失元素的 CSV 字符串。

"elem1, elem2,,elem 4".split(",") = List("elem1", "elem2", "", "elem4")

伟大的!这就是我所期望的。

另一方面,如果元素 3 和 4 都缺失,则:

"elem1, elem2,,".split(",") = List("elem1", "elem2")

而我希望它返回

"elem1, elem2,,".split(",") = List("elem1", "elem2", "", "")

我错过了什么吗?

【问题讨论】:

    标签: scala


    【解决方案1】:

    正如彼得在他的回答中提到的,"string".split(),在 Java 和 Scala 中,默认情况下不会返回尾随的空字符串。

    但是,您可以通过传入第二个参数来指定它返回尾随的空字符串,如下所示:

    String s = "elem1,elem2,,";
    String[] tokens = s.split(",", -1);
    

    这将为您带来预期的结果。

    你可以找到相关的Java doc here

    【讨论】:

      【解决方案2】:

      我相信尾随空格不包含在返回值中。

      split(String regex) 的 JavaDoc 说:“这个方法的工作原理就像是通过给定表达式和零限制参数调用双参数split 方法。因此,结果数组中不包含尾随的空字符串。”

      因此,在您的情况下,应使用 split(String regex, int limit) 以获得返回值中的尾随空字符串。

      【讨论】:

        猜你喜欢
        • 2014-10-12
        • 2022-01-20
        • 2011-05-31
        • 1970-01-01
        • 2021-03-30
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多