如何删除数组中的尾部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,
答案 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?
是一个声明空序列的方法。