删除包含特定数字的数组中的值

时间:2017-01-17 08:23:42

标签: arrays ruby

我尝试删除包含5的任何值,因此在这种情况下,5152553应该全部被删除。

尝试了以下并在irb中玩过但似乎无法让它工作

n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 15, 25, 53]
n.delete_if { |a| a =~ /5*/ }

3 个答案:

答案 0 :(得分:4)

您正在寻找Array#reject

n.reject { |number| number.to_s =~ /5/ }
#=> [1, 2, 3, 4, 6, 7, 8, 9]

答案 1 :(得分:4)

Ruby 2.4附带Integer#digits

n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 15, 25, 53]
n.reject { |i| i.digits.include? 5 }
#=> [1, 2, 3, 4, 6, 7, 8, 9]

答案 2 :(得分:2)

使用Array#delete_if也可以:

n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 15, 25, 53]
n.delete_if { |a| a.to_s =~ /5/ }
# => [1, 2, 3, 4, 6, 7, 8, 9]