Ruby - 对包含 nil 值的散列中的字符串值进行小写

Ruby - Downcase on string values in a hash that also contains nil values

目前正在尝试将哈希的所有字符串值调整为小写。此散列包含多种值类型(nil、字符串、整数),因此 运行 在整个散列中使用小写会由于散列中的 nil 值而吐出错误。

NoMethodError: undefined method "downcase!" for nil:NilClass

我是 Ruby 的新手,我不确定如何最好地 运行 通过此散列并跳过 nil 或整数值。我尝试使用 .map 将每个值转换为字符串,然后将这些值小写,但我要么没有看到最终结果有任何差异,要么出现错误。

testHash = testHash.map(&:to_s)
testHash.map(&:downcase!)
(I've also attempted testHash.each {|k,v| v.downcase!}

我敢肯定这大部分是我不知道如何在 Ruby 中正确地写出来。如果您需要更多信息,请告诉我,谢谢。

在小写前检查该值是否为有效字符串

testHash.each { |k, v| v.downcase! if v.is_a?(String) }
h = {a: nil, b: "Someword", c: 1}
h.map {|k,v| v.downcase! if v.is_a? String}
puts h #=> {:a=>nil, :b=>"someword", :c=>1}

这行得通。我通过哈希映射并检查字符串值,然后 运行 downcase! 方法。