在哈希键中用下划线替换空格

时间:2016-12-20 23:58:49

标签: ruby string hash gsub

我有一个哈希,其中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设置尝试”

1 个答案:

答案 0 :(得分:3)

如果要重新键入整个哈希值,可能需要重建它:

@@parsed_items = Hash[
 @@parsed_items.map do |key, value|
   [ key.gsub(/\s/,'_'), value ]
 end
]

each_key方法忽略你的块返回的任何内容,它只是抛出它,所以不会对哈希本身进行任何改动。

你也可以编写一个辅助方法来强制执行此操作的任意哈希。

请注意,使用@@类级别变量通常是一个混合问题的迹象。实例方法不应该在类数据中徘徊,它应该被认为是私有的。如果确实需要访问它,请公开为您提供干净界面的类级方法。