18

Ruby on Rails 3.2.13 を使用していますが、対応するハッシュ値が空白のハッシュ キーを削除したいと考えています。つまり、次のハッシュがある場合

{ :a => 0, :b => 1, :c => true, :d => "", :e => "   ", :f => nil }

結果のハッシュは次のようになります (注: 0andtrueは空白とはみなされません)

{ :a => 0, :b => 1, :c => true }

どうすればそれを作ることができますか?

4

3 に答える 3

31

Railsを使用している場合は、試すことができます

hash.delete_if { |key, value| value.blank? }

またはRubyだけの場合

hash.delete_if { |key, value| value.to_s.strip == '' }
于 2013-10-02T23:57:42.793 に答える
0

techvineet のソリューションに関して、value == [] の場合は次の点に注意してください。

[].blank?               => true 
[].to_s.strip == ''     => false 
[].to_s.strip.empty?    => false
于 2017-07-31T13:31:24.467 に答える