我看起来像这样丑陋的字符串:
"\"New\"=>\"0\""
哪种方法是将其转换为哈希对象?
答案 0 :(得分:3)
"\"New\"=>\"0\""
的问题是它看起来不像哈希。所以第一步应该是操纵它看起来像哈希:
"{" + a + "}"
# => "{\"New\"=>\"0\"}"
现在,一旦你有一个哈希字符串,你就可以将它转换成Hash,如下所示:
eval "{" + a + "}"
# => {"New"=>"0"}
但仍有一个问题,eval
is not safe and inadvisable to use。因此,让我们进一步操作字符串使其看起来像json并使用JSON.parse
:
require `json`
JSON.parse ("{" + a + "}").gsub("=>",":")
# => {"New"=>"0"}
答案 1 :(得分:2)
JSON.parse(string.gsub("=>", ":"))
答案 2 :(得分:2)
您可以使用正则表达式来提取键和值。然后直接创建Hash
Hash[*"\"New\"=>\"0\"".scan(/".*?"/)]
如果您无法准确地告诉我们这些字符串的一般格式,那么很难确定最佳方式。你可能甚至不需要正则表达式。例如
Hash[*"\"New\"=>\"0\"".split('"').values_at(1,3)]
也适用于"\"Rocket\"=>\"=>\""