在Ruby中将字符串转换为符号和整数的哈希值

Igg*_*ggy 2 ruby hash

我想转换这种格式的任何给定字符串: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
Run Code Online (Sandbox Code Playgroud)

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]
Run Code Online (Sandbox Code Playgroud)

但我不能把它们放在一起用于预期的目的.

如何将格式中的任何给定字符串转换"a=2, b=3, c=4, d=5"为symbol-inter键值的哈希值{:a=>2, :b=>3, :c=>4, :d=>5}

Jor*_*ing 7

我可能会这样做:

str = "a=2, b=3, c=4, d=5"
str.scan(/(\w+)=(\d+)/).map {|k,v| [ k.to_sym, v.to_i ] }.to_h
Run Code Online (Sandbox Code Playgroud)

scan刚刚提取每个键-值对,其余应该是不言自明的.