Scala:如何通过拆分字符串将字符串序列转换为元组序列
Scala: how to transform sequence of strings into a sequence of tuples by splitting strings
我正在尝试转换如下所示的序列
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(" ")))
显然这行不通,谁能给我建议?
可能是这样的:-
val raw: Seq[String] = Seq("timmy barns", "jimmy smith", "mark middle")
val splitRaw = raw.map { x =>
(x.split(" ").head, x.split(" ").last)
}
希望对您有所帮助!
这将优雅但安静地将所有不 split()
的输入放入 2 个元素中。
raw.map(_.split("\s+")).collect{case Array(a,b) => (a,b)}
我的版本)
raw.map(_.split(" ") match {
case Array(a, b) => (a, b)
})
如果你想将它与更通用的正则表达式匹配结合起来,这个变体可能更可取:
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))
我正在尝试转换如下所示的序列
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(" ")))
显然这行不通,谁能给我建议?
可能是这样的:-
val raw: Seq[String] = Seq("timmy barns", "jimmy smith", "mark middle")
val splitRaw = raw.map { x =>
(x.split(" ").head, x.split(" ").last)
}
希望对您有所帮助!
这将优雅但安静地将所有不 split()
的输入放入 2 个元素中。
raw.map(_.split("\s+")).collect{case Array(a,b) => (a,b)}
我的版本)
raw.map(_.split(" ") match {
case Array(a, b) => (a, b)
})
如果你想将它与更通用的正则表达式匹配结合起来,这个变体可能更可取:
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))