gpt4 book ai didi

scala - 字符和字符串参数之间的拆分函数区别

转载 作者:行者123 更新时间:2023-12-04 14:25:02 24 4
gpt4 key购买 nike

我在 scala REPL 中尝试以下代码:

"ASD-ASD.KZ".split('.')
res7: Array[String] = Array(ASD-ASD, KZ)

"ASD-ASD.KZ".split(".")
res8: Array[String] = Array()

为什么这个函数调用有不同的结果?

最佳答案

在功能使用上有很大的不同。
split函数被重载,这是来自 Scala 源代码的实现:

/** For every line in this string:

  • Strip a leading prefix consisting of blanks or control characters
  • followed by | from the line.

*/


  def stripMargin: String = stripMargin('|')

private def escape(ch: Char): String = "\\Q" + ch + "\\E"

@throws(classOf[java.util.regex.PatternSyntaxException])
def split(separator: Char): Array[String] = toString.split(escape(separator))

@throws(classOf[java.util.regex.PatternSyntaxException])
def split(separators: Array[Char]): Array[String] = {
val re = separators.foldLeft("[")(_+escape(_)) + "]"
toString.split(re)
}

所以当你调用 split()使用 char,您要求按该特定字符拆分:
scala> "ASD-ASD.KZ".split('.')
res0: Array[String] = Array(ASD-ASD, KZ)

当您调用 split()有一个字符串,这意味着你想要一个正则表达式。因此,要使用双引号获得确切的结果,您需要执行以下操作:
scala> "ASD-ASD.KZ".split("\\.")
res2: Array[String] = Array(ASD-ASD, KZ)

在哪里:
  • \转义以下字符
  • 第二\为正则表达式的点转义字符,我们想将其用作字符
  • . - 分割字符串的字符
  • 关于scala - 字符和字符串参数之间的拆分函数区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37697550/

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