Ruby - 包含nil值的散列中的字符串值的Downcase

时间:2016-09-12 22:11:00

标签: ruby hash lowercase

目前正在尝试将哈希的所有字符串值调整为小写。此哈希包含多个值类型(nil,string,integer),因此在整个哈希中使用downcase运行会因哈希值中的nil值而发出错误。

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

我对Ruby很陌生,我不确定如何最好地运行此哈希并跳过零值或整数值。我试图使用.map将每个值转换为字符串,然后将值下调,但我要么没有看到最终结果的任何差异,要么我得到错误。

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

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

2 个答案:

答案 0 :(得分:2)

在下载

之前检查该值是否为有效字符串
testHash.each { |k, v| v.downcase! if v.is_a?(String) }

答案 1 :(得分:1)

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!方法。