当值包含键和值之间的分隔符或对之间的分隔符时,如何从字符串中提取键和值?

问题描述 投票:-1回答:1

[在以下情况下如何有效地将字符串中的键值对提取到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结尾,然后是另一个键(有时是空白...

rust
1个回答
2
投票

这不像使用迭代器那样干净,但这是一个想法。如果从头开始读取字符串,则很难读取键和值,这是因为必须提前知道要读取的内容还是该值还是下一个键的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.