如何用不同的值替换数组中的给定值?

时间:2017-06-26 19:05:57

标签: ruby-on-rails arrays ruby gsub

我有一个数组,其中一些值为零。我想用" 0" s替换那些nils。

因此,如果我的数组是@array = [nil, "2", nil, nil, "f"],我希望这种情况发生:

 > @array.method
=> ["0", "2", "0", "0", "f"]

我尝试使用gsub,但我得到了一个"未定义的方法' gsub' for Array"错误。

3 个答案:

答案 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"]