使用ruby将字符串更改为哈希

时间:2015-07-02 06:44:47

标签: ruby

我看起来像这样丑陋的字符串:

"\"New\"=>\"0\""

哪种方法是将其转换为哈希对象?

3 个答案:

答案 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\"=>\"=>\""