2012-03-09 141 views

回答

2

如果为空字符串被允许:

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

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

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

这将检查每一个元素,如果它仅由数字(\d) - 如果其中任何一个没有,假将被退回。

编辑:您没有完全指定空字符串是否有效。如果是,该线具有被重写(按照DarkDust)如下:

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

+1,不知道'all?'。但是,如果允许空字符串,我只需要's =〜/^\ d * $ /'来代替。 – DarkDust 2012-03-09 07:24:54

+0

够公平的。 :) – 2012-03-09 07:28:51

+0

相同,但相反:'arr.any? {| S | s =〜/^[^ \ d] + $ /}' – 2012-03-09 07:36:37

相关问题