首页 文章

Scala:在字符串列表中的每个字符后添加char

提问于
浏览
1

我有一项任务,我在使用Scala时遇到了一些麻烦 . 我必须定义一个函数,该函数返回从作为参数接收的列表构造的字符串列表 . 对于元素中的每个字母,将添加下一个字符:

transformStrings(List("CHAT", "LIST", "ASK"))
//> res13: List[String] = List(CDHIABTU, LMIJSTT, ABSTKL)

到目前为止,我想我必须以某种方式映射List,然后使用foreach或for / yield来遍历每个char,但我不确定如何完成它 .

2 回答

  • 3

    你可以做:

    List("CHAT", "LIST", "ASK").map(s => s.flatMap(c => c.toString + (c+1).toChar))
    // res9: List[String] = List(CDHIABTU, LMIJSTTU, ABSTKL)
    

    要么:

    List("CHAT", "LIST", "ASK").map(s => s.flatMap(c => Seq(c, (c+1).toChar)))
    // res13: List[String] = List(CDHIABTU, LMIJSTTU, ABSTKL)
    
  • 3

    foldLeft 怎么样,像:

    List("CHAT", "LIST", "ASK").map(_.foldLeft("")((a, b) => a + b + (b + 1).toChar))
    >res0: List[String] = List(CDHIABTU, LMIJSTTU, ABSTKL)
    

    阐释:

    • areduce value

    • bString 中的下一个字符(如"CHAT")

    • (b+1) 表示 next char ascii number

    • toCharascii number 转换为 Char

    • 最后 join bnext charString

相关问题