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

时间:2017-04-15 15:22:38

标签: scala list foreach

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

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

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:3)

foldLeft如何:

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

阐释:

  1. a降低值
  2. bString中的 next char (如“CHAT”)
  3. (b+1)表示next char ascii号码
  4. toChar会将ascii number转换为Char
  5. 最后join bnext charString
相关问题