Scala:如何将字符串拆分为映射?

7

环境:Scala 2.10+ IDE:Eclipse Kepler

我有一行文本:NAME=bala AGE=23 COUNTRY=Singapore

如何将其转换为一个映射(map)?

Map(NAME -> bala, AGE -> 23, COUNTRY -> Singapore)

3个回答

19

另一个解决方案

val str = "NAME=bala AGE=23 COUNTRY=Singapore"
val pairs = str.split("=| ").grouped(2)
val map = pairs.map { case Array(k, v) => k -> v }.toMap
// Map(NAME -> bala, AGE -> 23, COUNTRY -> Singapore)

我刚找到了确切的解决方案。不错! - serejja

7
我想到了下面这个方法,但我几乎确定有更高效的方法:
val line = "NAME=bala AGE=23 COUNTRY=Singapore"
line.split(" ").map(_.split("=")).map(arr => arr(0) -> arr(1)).toMap

这给了我:
res10: scala.collection.immutable.Map[String,String] = Map(NAME -> bala, AGE -> 23, COUNTRY -> Singapore)

1
使用正则表达式:
val line = "NAME=bala AGE=23 COUNTRY=Singapore"

val regex = """(\w+)=(\w+)""".r
val map = line.split("\\s+") map { elem =>
  val regex(key, value) = elem
  (key, value)
} toMap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接