如何删除数组中的尾部nil /空值

时间:2015-01-16 10:43:08

标签: ruby

如何删除数组中的尾部nil /空值?

我想删除以下数组中的拖尾nil值

因此数组大小可能变为125,而不是127

        ...
        [123] "Conc_Net_LE_8_TDR_Long_Other",
        [124] "Conc_Net_LE_8_TDR_Short_Other",
        [125] "Contract_Units",
        [126] nil,
        [127] nil,

4 个答案:

答案 0 :(得分:3)

["foo", nil, ""].grep(/./)
# => ["foo"]

答案 1 :(得分:2)

你可以做到

new_array = array.compact.delete("")

#compact将删除所有nil个对象,并使用#delete删除所有空字符串对象("")。你也可以这样做:

array.delete_if { |elem| elem.nil? || elem.empty? }

答案 2 :(得分:1)

使用Array#compact或爆炸版本compact!修改被调用对象以删除nil元素。

> arr = [1, nil]
> arr.compact
 => [1]

要删除nil 为空,您可以使用Array#reject或爆炸版reject!

arr = [1, nil, ""]
arr.reject { |i| i.to_s.empty? }
=> [1]

答案 3 :(得分:0)

如果你有兴趣只删除拖尾的零和空序列,也许你可以做这样的事情

array = ["1","2","3",nil," ","4",nil,nil, ""]
rev = array.reverse
while rev[0] == nil or is_empty_sequence?(rev[0])
  rev.shift
end
p rev.reverse #Output -> ["1","2","3",nil," ","4"]

其中is_empty_sequence?是一个声明空序列的方法。