从Ruby中的数组中删除字符串

时间:2016-09-12 16:40:49

标签: ruby

假设我有一个看起来像这样的数组:

arr = [ 1, 5, "dog", 6 ]

如何删除String以使我的输出如下所示:

[ 1, 5, 6 ]

4 个答案:

答案 0 :(得分:5)

另一种方法是使用 case-equal

[1, 5, "dog", 6].reject &String.method(:===)
#⇒ [1, 5, 6]

答案 1 :(得分:3)

试试这个:

arr.select! { |el| el.class != String }

或者如果您只想要数字:

arr.select! { |el| el.is_a? Numeric }

答案 2 :(得分:2)

这是使用Enumerable#grepEnumerable#grep_v的好机会:

[ 1, 5, "dog", 6 ].grep(Numeric)
# => [1, 5, 6]

[ 1, 5, "dog", 6 ].grep_v(String)
# => [1, 5, 6]

答案 3 :(得分:0)

您也可以采用相反的方式并使用reject!。它会删除与您设置的条件匹配的所有元素。

arr.reject! { |el| !el.is_a? Numeric }

这在功能上与

相同
arr.select! { |el| el.is_a? Numeric }