Scala:如何通过拆分字符串将字符串序列转换为元组序列

时间:2018-06-12 20:33:28

标签: string scala sequences

我试图改变像下面那样的序列

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(" ")))

显然这不起作用,有人能给我建议吗?

4 个答案:

答案 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)
})