这是一个红宝石哈希:
a = {
:testOne => 1,
:testTwo => 2
}
如何重命名密钥以便强调它们?
a = {
:test_one => 1,
:test_two => 2
}
肯布卢姆让我在这里找到了正确的道路。您确实需要ActiveSupport或Rails3。但是,对于此解决方案,您不需要任何特定的宝石:
hash = Hash[a.map {|k,v| [k.to_s.underscore.to_sym, v]}]
谢谢你!
答案 0 :(得分:4)
Hash[a.map { |k,v| [k.to_s.downcase.sub('test','test_').to_sym, v] }]
更新:如果您需要查找公共根字符串,可以使用:
root = a.keys.inject do |m, e|
s = m.to_s
s.chop! while !e.to_s.start_with? s
s
end
答案 1 :(得分:2)
这个答案需要facets gem和activesupport(它是rails的一部分)。
require 'active_support'
require 'facets'
a.map{|k,v| [k.to_s.underscore.to_sym, v]}.to_h
# ^^^^^^^^^^^ ^^^^ from facets
# from activesupport