2012-03-09 191 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

相關問題