我需要将这个字符串用分号分隔,并使用关键字和值编号写入地图。
"Mercedes 2000; BMW 2500; Audi 2000; Porsche 1000"
地图的最终输出应如下所示:
{Mercedes=2000, BMW=2500, Audi=2000, Porsche=1000}
答案 0 :(得分:3)
先除以";"
,然后映射:
val str = "Mercedes 2000; BMW 2500; Audi 2000; Porsche 1000"
val map = str
.split(";")
.map { it.trim().substringBefore(" ") to it.trim().substringAfter(" ") }
.toMap()
println(map)
将打印:
{Mercedes=2000, BMW=2500, Audi=2000, Porsche=1000}
答案 1 :(得分:2)
val input = "Mercedes 2000; BMW 2500; Audi 2000; Porsche 1000"
val map = HashMap<String, String>()
val keyValue = input.split("; ") // split the input into key-value items
for (item in keyValue) {
val keyValueSplit = item.split(" ")// split the key and the value
val key = keyValueSplit[0]
val value = keyValueSplit[1]
map[key] = value // insert into result map
}
println(map)
输出
{Audi = 2000,Porsche = 1000,Mercedes = 2000,BMW = 2500}
请注意在"; "
处使用空格进行第一次拆分。否则,在空白处" "
进行的第二次拆分将为您提供不同的结果。
答案 2 :(得分:1)
正如您特别要求的正则表达式解决方案:
val map = HashMap<String, String>()
val regex = """(\S+)\s+(\d+)(?:;\s+)?""".toRegex()
for (m in regex.findAll("Mercedes 2000; BMW 2500; Audi 2000; Porsche 1000"))
map[m.groupValues[1]] = m.groupValues[2]
println(map)
这产生
{Audi=2000, Porsche=1000, Mercedes=2000, BMW=2500}