【问题标题】:how to append char at start and end of each element in scala seq?如何在scala seq中每个元素的开头和结尾附加char?
【发布时间】:2020-05-06 15:39:39
【问题描述】:

我正在尝试对序列进行一些字符串操作

我有元素序列,例如:Seq("aaa","bbb","ccc") 并且需要转换为字符串,并在每个元素的开头和结尾附加一些字符

结果应该是字符串 -> "aaa","bbb","ccc"

scala> val initial = Seq("aaa","bbb","ccc")

initial: Seq[String] = List(aaa, bbb, ccc)

scala> initial.foldLeft(Seq [String] ()){(z,x)=>z:+("\""+x+"\""+",")}

res2: Seq[String] = List("aaa",, "bbb",, "ccc",)

有什么建议吗?

【问题讨论】:

  • 我没有看到你添加任何字符。另外,你试过什么?你有哪些问题?

标签: scala


【解决方案1】:

这也可以只使用mkString(start, sep, end)来实现

https://www.scala-lang.org/api/2.12.3/scala/collection/immutable/List.html#mkString(start:String,sep:String,end:String):String

List("aaa", "bbb", "ccc").mkString("\"", "\",\"", "\"")

【讨论】:

    【解决方案2】:

    您可能只想这样做:

    def appndAndPrependTo[A](data: Seq[A])(s: String): Seq[String] =
      data.map(a => s"${s}${a}${s}")
    

    【讨论】:

    • 我认为OP也想用分隔符连接所有字符串,所以这个+mkString(",")
    【解决方案3】:

    你不需要 foldLeft 来转换元素。

    试试这个

    initial.map(x=> s""""${x}"""").mkString(",")

    【讨论】:

    • 用三重引号看起来不太漂亮,但是,在插值中无法逃脱,所以你要做什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2017-03-03
    • 2011-05-26
    • 2022-07-21
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    相关资源
    最近更新 更多