2014-02-28 41 views

回答

9

又一解决方案

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) 
+0

我刚走到精确解。好一个 – serejja

3

我走到这样的事情,但我几乎可以肯定有一种更有效的方式:

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) 
0

使用正则表达式:

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