我有一个数组,其中一些值为零。我想用" 0" s替换那些nils。
因此,如果我的数组是@array = [nil, "2", nil, nil, "f"]
,我希望这种情况发生:
> @array.method
=> ["0", "2", "0", "0", "f"]
我尝试使用gsub
,但我得到了一个"未定义的方法' gsub' for Array"错误。
答案 0 :(得分:3)
您可以在数组上使用map
并检查该元素是否为nil
,如果是,则替换为"0"
,如果没有,则保留该值:
array = [nil, "2", nil, nil, "f"]
p array.map{|e| e.nil? ? '0' : e}
# => ["0", "2", "0", "0", "f"]
答案 1 :(得分:1)
没有内置函数来替换数组中的nil,所以是的,map是要走的路。如果较短的版本会让你更快乐,你可以这样做:
0010000
答案 2 :(得分:0)
@array = [nil, "2", nil, nil, "f"]
=> [nil, "2", nil, nil, "f"]
@array.map {|x| x ? x : "0"}
=> ["0", "2", "0", "0", "f"]