【发布时间】:2016-10-06 04:34:39
【问题描述】:
我想将这种格式的任何给定字符串:a = "a=2, b=3, c=4, d=5" 转换为符号(键)和整数(值)的哈希。
在这种情况下,预期的输入是{:a=>2, :b=>3, :c=>4, :d=>5}。
这就是我所拥有的:
def hash_it(str)
str.split(", ").map{|s| s.split("=")}.to_h
end
hash_it(str) 返回{"a"=>"2", "b"=>"3", "c"=>"4", "d"=>"5"}。关闭,但不完全。我不确定如何将键转换为符号,将值转换为整数。我可以分别转换它们:
str.split(", ").map{|s| s.split("=")}.map{|n| n[0].to_sym}
#=> [:a, :b, :c, :d]
str.split(", ").map{|s| s.split("=")}.map{|n| n[1].to_i}
#=> [2, 3, 4, 5]
但我无法将它们组合在一起以达到预期目的。
如何将"a=2, b=3, c=4, d=5" 格式的任何给定字符串转换为符号间键值{:a=>2, :b=>3, :c=>4, :d=>5} 的哈希?
【问题讨论】:
-
也许值得注意的是,如果
a是您的数组,eval "{ #{a.gsub(/\w+/,':\1') } }" #=> {:a=>2, :b=>3, :c=>4, :d=>5}。