从字符串中删除双引号并转换为符号

时间:2013-10-04 06:11:49

标签: ruby string

这是一个非常简单的场景..

我试图从对象用户获取所有用户名和id作为哈希。

user = User.all
data = {}
User.map do |u|
   data[u.name.to_sym] = u.id
end

# data will be.. 
data[:"test"] = 1 ..

But, I need like this data[:test] = 1

我想从字符串中删除双引号(开头和结尾)并转换为符号.. 或者有没有直接的方法将模型对象转换为我所期望的哈希值?

我知道,有很多方法(regx或字符串函数)从字符串中删除双引号。但是,我期待非常优化和简单的解决方案。

2 个答案:

答案 0 :(得分:1)

如果你有这样的名字“name @ bond”

"name@bond".to_sym #=>output :"name@bond"

然后你必须要删除@'“..任何其他特殊字符

"name@bond".parameterize.underscore.to_sym #=> :name_bond
"name@bond".parameterize #=> "name-bond"
"name-bond".underscore #=> "name_bond"
"name_bond".to_sym #=> :name_bond


这是参考ruby-doc symbols

答案 1 :(得分:0)

'test'.parameterize.underscore.to_sym

'test'.to_sym