Ruby中的数组,如何处理这种情况?

时间:2012-03-09 07:15:55

标签: ruby arrays

假设我有以下数组:

arr = ["", "2121", "8", "myString"]

如果数组包含任何非数字符号,我想返回false。

2 个答案:

答案 0 :(得分:8)

arr.all? { |s| s =~ /^\d+$/ }

这将检查每个元素是否只包含数字(\d) - 如果它们中的任何一个没有,则返回false。

编辑:您没有完全指定空字符串是否有效。如果是,则必须按如下方式重写该行(根据DarkDust):

arr.all? {|s| s =~ /^\d*$/ }

答案 1 :(得分:2)

如果允许空字符串:

def contains_non_digit(array)
    !array.select {|s| s =~ /^.*[^0-9].*$/}.empty?
end

说明:这会过滤所有与正则表达式匹配的字符串的数组。对于包含至少一个非数字字符的字符串,此正则表达式适用。如果结果数组为空,则数组不包含非数字字符串。最后,我们需要否定结果,因为我们想要知道数组 包含非数字字符串。