我想转换这种格式的任何给定字符串: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}?
我可能会这样做:
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刚刚提取每个键-值对,其余应该是不言自明的.