在哈希键中用下划线替换 space
replace space with underscore in Keys for a Hash
我有一个散列,其中的键有一些 space,如下所示。我想用下划线替换 space 。我不知道为什么,但下面的程序不起作用。
按键:
"VoLTE QCI1 Setup Failure%"
"VoLTE QCI1 Setup Failures"
"VoLTE QCI1 Setup Attempts"
@@parsed_items.each_key {|key|
key.gsub(/\s/,'_')
ap key
}
预期输出:
"VoLTE_QCI1_Setup_Failure%"
"VoLTE_QCI1_Setup_Failures"
"VoLTE_QCI1_Setup_Attempts"
当前输出:
"VoLTE QCI1 Setup Failure%"
"VoLTE QCI1 Setup Failures"
"VoLTE QCI1 Setup Attempts"
如果您想重新键入整个哈希,您可能需要重建它:
@@parsed_items = Hash[
@@parsed_items.map do |key, value|
[ key.gsub(/\s/,'_'), value ]
end
]
each_key
方法会忽略您的块 returns,它只是将其丢弃,因此不会对哈希本身进行任何更改。
您还可以编写一个辅助方法来去除任意散列的下划线,同样可以做到这一点。
请注意,使用 @@
class 级变量通常是混合关注的标志。实例方法不应该在 class 数据中四处寻找,它应该被认为是私有的。如果您确实需要访问它,请公开 class 级别的方法,为您提供干净的界面。
我有一个散列,其中的键有一些 space,如下所示。我想用下划线替换 space 。我不知道为什么,但下面的程序不起作用。
按键: "VoLTE QCI1 Setup Failure%" "VoLTE QCI1 Setup Failures" "VoLTE QCI1 Setup Attempts"
@@parsed_items.each_key {|key|
key.gsub(/\s/,'_')
ap key
}
预期输出: "VoLTE_QCI1_Setup_Failure%" "VoLTE_QCI1_Setup_Failures" "VoLTE_QCI1_Setup_Attempts"
当前输出: "VoLTE QCI1 Setup Failure%" "VoLTE QCI1 Setup Failures" "VoLTE QCI1 Setup Attempts"
如果您想重新键入整个哈希,您可能需要重建它:
@@parsed_items = Hash[
@@parsed_items.map do |key, value|
[ key.gsub(/\s/,'_'), value ]
end
]
each_key
方法会忽略您的块 returns,它只是将其丢弃,因此不会对哈希本身进行任何更改。
您还可以编写一个辅助方法来去除任意散列的下划线,同样可以做到这一点。
请注意,使用 @@
class 级变量通常是混合关注的标志。实例方法不应该在 class 数据中四处寻找,它应该被认为是私有的。如果您确实需要访问它,请公开 class 级别的方法,为您提供干净的界面。