假设我有以下数组:
arr = ["", "2121", "8", "myString"]
如果数组包含任何非数字符号,我想返回false。
答案 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
说明:这会过滤所有与正则表达式匹配的字符串的数组。对于包含至少一个非数字字符的字符串,此正则表达式适用。如果结果数组为空,则数组不包含非数字字符串。最后,我们需要否定结果,因为我们想要知道数组 包含非数字字符串。