我正在研究配置文件解析器,我需要帮助将key:value对解析为散列。
我的数据形式为:key: value key2: value2 another_key: another_value
。
到目前为止,我的代码是
line = line.strip!.split(':\s+')
以
的形式返回一个数组["key:value"]["key2: value2"]["another_key: another_value"]
如何以
的形式将这些数组转换为单个哈希{key=>value, key2=>value2, another_key=>another_value}
我不确定key:value对是否需要以字符串的形式出现。无论什么都是最容易合作的。
感谢您的帮助!
这是我找到的解决方案:
line = line.strip.split(':')
hash = Hash[*line]
导致输出{"key"=>"value"}, {"key2"=>"value2"}
答案 0 :(得分:1)
更简单:
Hash[*line.gsub(':',' ').split]
# => {"key"=>"value", "key2"=>"value2", "another_key"=>"another_value"}
答案 1 :(得分:1)
假设键和值是单个单词,我可能会这样做:
Hash[line.scan(/(\w+):\s?(\w+)/)]
如果它不是您想要的那样,您可以更改正则表达式。
答案 2 :(得分:1)
非常接近Cary的解决方案:
Hash[*line.delete(':').split]