0

我正在研究配置文件解析器,我需要帮助将 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}

我不确定键:值对是否需要采用字符串的形式。无论是最容易使用的。

谢谢你的帮助!


这是我找到的解决方案:

    line = line.strip.split(':')
    hash = Hash[*line]

这导致输出{"key"=>"value"}, {"key2"=>"value2"}

4

3 回答 3

1

更简单:

Hash[*line.gsub(':',' ').split]
  # => {"key"=>"value", "key2"=>"value2", "another_key"=>"another_value"} 
于 2013-11-15T02:35:49.820 回答
1

假设键和值是单个单词,我可能会这样做:

Hash[line.scan(/(\w+):\s?(\w+)/)]

如果它不是您想要的,您可以更改正则表达式。

于 2013-11-15T05:15:01.870 回答
1

非常接近 Cary 的解决方案:

Hash[*line.delete(':').split]
于 2013-11-15T07:35:58.853 回答