我为 csv 样式的字符串尝试了一个简单的拆分,其中包含逗号后的空格,如下所示:
scala> """"First", "SecondAfterSpace"""".split(",")
res0: Array[String] = Array("First", " "SecondAfterSpace"")
scala> res0(0)
res3: String = "First"
scala> res0(1)
res4: String = " "SecondAfterSpace""
结果数组的第二个字符串有意外的双引号,比原始字符串多。
可以在开始时包含额外的空间,因为我还没有修剪它。但我希望得到与以下类似的结果,但需要额外的前导空格,而不是额外的双引号:
scala> """"First","SecondNoSpace"""".split(",")
res1: Array[String] = Array("First", "SecondNoSpace")
我知道我可以通过以下方法解决此问题,但我想了解我是否做错了什么或者这是一个错误:
scala> """"First", "SecondAfterSpaceTrimmed"""".split(",").map(_.trim)
res2: Array[String] = Array("First", "SecondAfterSpaceTrimmed")
只是为了确保我也尝试了所有变体,比如
.split(',')
.split(""",""")
.split("""\,""")
.split(Array(','))
但所有额外双引号的结果都相同。
在这种情况下:从 scala-doc 我看到使用了 StringLike 中的方法。该文档讨论了一个 char 数组。但是我可以使用没有记录的正则表达式,所以如果它在 Java 字符串中使用 split 方法,这让我很怀疑......我很困惑......