我有一个哈希,其中Keys有一些空格,如下所示。我想用下划线替换空间。我不知道为什么,但下面的程序不起作用。
键: “VoLTE QCI1安装失败%” “VoLTE QCI1设置失败” “VoLTE QCI1设置尝试”
@@parsed_items.each_key {|key|
key.gsub(/\s/,'_')
ap key
}
预期输出 “VoLTE_QCI1_Setup_Failure%” “VoLTE_QCI1_Setup_Failures” “VoLTE_QCI1_Setup_Attempts”
当前输出: “VoLTE QCI1安装失败%” “VoLTE QCI1设置失败” “VoLTE QCI1设置尝试”
答案 0 :(得分:3)
如果要重新键入整个哈希值,可能需要重建它:
@@parsed_items = Hash[
@@parsed_items.map do |key, value|
[ key.gsub(/\s/,'_'), value ]
end
]
each_key
方法忽略你的块返回的任何内容,它只是抛出它,所以不会对哈希本身进行任何改动。
你也可以编写一个辅助方法来强制执行此操作的任意哈希。
请注意,使用@@
类级别变量通常是一个混合问题的迹象。实例方法不应该在类数据中徘徊,它应该被认为是私有的。如果确实需要访问它,请公开为您提供干净界面的类级方法。