[在以下情况下如何有效地将字符串中的键值对提取到HashMap
中
key
后面总是:
,然后是值value
以,
结尾,然后是另一个key
(有时是空格,然后是key
)value
可以始终包含[C0], :
不包括value
key
的顺序不固定key
名称是已知的>>对于这些键值对
key
它应该产生这个
key1:value1, key2:this is, some value2, key3:anothe:r val,ue,
:
HashMap
我已经尝试了以下代码,但是仅使用
"key1", "value1" "key2", "this is, some value2" "key3", "anothe:r val,ue"
作为分隔符是不好的,因为该值在整个过程中都可能包含逗号。
,
我的想法是提供键列表:
"key1:value1, key2:this is, some value2, key3:anothe:r val,ue," .split(",") .map(|kv| kv.splitn(2, ":").collect::<Vec<&str>>()) .filter(|vec| vec.len() == 2) .map(|vec| (vec[0].trim().into(), vec[1].trim().into())) .collect()
用作定界符
[当键始终后跟:时,如何有效地将字符串中的键-值对提取到HashMap中,然后值的值以a结尾,然后是另一个键(有时是空白...
这不像使用迭代器那样干净,但这是一个想法。如果从头开始读取字符串,则很难读取键和值,这是因为必须提前知道要读取的内容还是该值还是下一个键的一部分。