【问题标题】:Adding single quotes to a string in Scala在 Scala 中为字符串添加单引号
【发布时间】:2018-10-02 03:40:06
【问题描述】:

我们正在尝试为 Scala 中一组字符串的每个元素添加单引号

val s : Set[String] = Set("abcd","cdef")

预期结果是 val s : Set[String] = Set("'abcd'","'cdef'")

尝试了多种方法 方法1:

s.map(x => x.mkString("'", "', '", "'"))

方法2:

s.map(x => '\'' + x + '\'')

对于 Scala 来说是相当新的,如果有人能指出我们正确的方向,那将有很大的帮助

【问题讨论】:

  • approach2 应该可以工作s.map(x => '\'' + x + '\'') 或使用多行字符串s.map(x => s"""'$x'""") 这样你就不必逃跑了。在 REPL 上试试
  • Approach1 有效,你只需要选择正确的中间元素:s.map(_.mkString("'","","'"))

标签: string scala scala-collections


【解决方案1】:

我认为 Scala 与您使用的任何一种语言之间没有太大区别。 您可能想要使用的一件事是String interpolation 然后就可以写了

s.map(x => s"'$x'")

【讨论】:

    【解决方案2】:

    你不能用类似的模式用双引号括起来。因此,当涉及单引号或双引号换行时,请选择十六进制值。十六进制 22 用于双引号,十六进制 27 用于单引号。很容易记住。

    scala> val sq = Integer.parseInt("27",16).toChar
    sq: Char = '
    
    scala> val dq = Integer.parseInt("22",16).toChar
    dq: Char = "
    
    scala>  val s : Set[String] = Set("abcd","cdef")
    s: Set[String] = Set(abcd, cdef)
    
    scala> s.map(x => s"$sq$x$sq")
    res14: scala.collection.immutable.Set[String] = Set('abcd', 'cdef')
    
    scala> s.map(x => s"$dq$x$dq")
    res15: scala.collection.immutable.Set[String] = Set("abcd", "cdef")
    

    希望,这会增加此类场景的清晰度。

    【讨论】:

      猜你喜欢
      • 2020-12-07
      • 2016-03-08
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      相关资源
      最近更新 更多