gpt4 book ai didi

string - Scala StringLike split 方法为前导空格创建额外的双引号

转载 作者:行者123 更新时间:2023-12-02 08:40:51 25 4
gpt4 key购买 nike

我尝试对 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 String 中使用 split 方法......我很困惑......

最佳答案

不,不是。这就是 REPL 表示它的方式:

scala> val xs = """"First", "SecondAfterSpace"""".split(",")
xs: Array[String] = Array("First", " "SecondAfterSpace"")

scala> xs.last
res0: String = " "SecondAfterSpace""

scala> xs.last.count(_ == '"')
res1: Int = 2

如你所见,没有多余的引号

要在引号后修剪空格,您可以在拆分中使用正则表达式:

scala> val xs = """"First", "SecondAfterSpace"""".split(",[ ]?")
xs: Array[String] = Array("First", "SecondAfterSpace")

关于string - Scala StringLike split 方法为前导空格创建额外的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com