如何在给定Scala中的位置列表的情况下拆分字符串

Mic*_*ael 8 string collections scala

你会如何编写一个函数实现split(positions:List[Int], str:String):List[String],这类似于splitAt将给定的字符串拆分为给定的位置列表的字符串列表?

例如

  • split(List(1, 2), "abc") 回报 List("a", "b", "c")
  • split(List(1), "abc") 回报 List("a", "bc")
  • split(List(), "abc") 回报 List("abc")

Mar*_*amy 5

def lsplit(pos: List[Int], str: String): List[String] = {
  val (rest, result) = pos.foldRight((str, List[String]())) {
    case (curr, (s, res)) =>
      val (rest, split) = s.splitAt(curr)
      (rest, split :: res)
  }
  rest :: result
}
Run Code Online (Sandbox Code Playgroud)