我试图改变像下面那样的序列
val raw: Seq[String] = Seq("timmy barns", "jimmy smith", "mark middle")
进入一个看起来像这样的序列。
val parsed: Seq[(String, String)] = Seq(("timmy", "barns"), ("jimmy", "smith"), ("mark", "middle"))
我能想出的最好的就是这样。
val parsed: Seq[(String, String)] = Seq(raw.map(i => i.split(" ")))
显然这不起作用,有人能给我建议吗?
答案 0 :(得分:1)
这将优雅但无声地将所有不会split()
的输入放入2个元素中。
raw.map(_.split("\\s+")).collect{case Array(a,b) => (a,b)}
答案 1 :(得分:1)
如果你想将它与更一般的正则表达式匹配相结合,这个变体可能更可取:
val P = "(\\w+) +(\\w+)".r
val result = for (P(x, y) <- raw) yield (x, y)
给出:
result: Seq[(String, String)] = List((timmy,barns), (jimmy,smith), (mark,middle))
答案 2 :(得分:0)
可能是这样的: -
val raw: Seq[String] = Seq("timmy barns", "jimmy smith", "mark middle")
val splitRaw = raw.map { x =>
(x.split(" ").head, x.split(" ").last)
}
希望这有帮助!
答案 3 :(得分:0)
我的版本)
raw.map(_.split(" ") match {
case Array(a, b) => (a, b)
})