Scala: как я могу разделить строку на карту


Окружающая Среда: Scala 2.10+ IDE: Eclipse Kepler

У меня есть строка NAME=bala AGE=23 COUNTRY=Singapore

Как я могу получить его в виде карты

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

3 3

3 ответа:

Еще одно решение

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)

Я пришел к чему-то вроде этого, но я почти уверен, что есть более эффективный способ:

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)

Используйте регулярное выражение:

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