2012-02-27 47 views
1

我有字符串"08",我想知道這個字符串是否是數字。我如何在Rails 3.1中做到這一點?如何查看字符串是否爲數字?

+1

如果你有字符串,那麼它是一個字符串。你需要了解什麼?如果字符串只包含數字? – lucapette 2012-02-27 17:48:10

+0

由於您使用的是Rails,我認爲*當*和*在哪裏*您正在嘗試這樣做很重要。換句話說:這是因爲你將值存儲在數據庫中? – 2012-02-27 18:16:33

回答

4

另一種方式做,這是把它留給紅寶石,以確定它:

begin 
    Float(string) 
    # String is numeric 
rescue ArgumentError, TypeError 
    # String is not numeric 
end 
+0

+1爲創意懶惰。一路追趕'+ 3'和'10e6'。 – 2012-02-27 18:19:27

3

您可以使用正則表達式:

str = "08" 
if str =~ /^-?(\d+(\.\d+)?|\.\d+)$/ 
    # string is numeric 
else 
    # string is not 
end 
+0

這似乎過於複雜。爲什麼不只用:str =〜/ ^(\ d +)$/ – Forrest 2012-02-27 18:12:00

+0

@Forrest因爲它可能是一個十進制數,在這種情況下,你的正則表達式不匹配。 – 2012-02-27 18:15:16

+0

@Forrest:'/^\ d + $'也不匹配負值。 OTOH,'/^- ?(\ d +(\。\ d +)?| \。\ d +)$ /'缺少指數符號和'+ 3'。 – 2012-02-27 18:18:35

0

如果您想驗證用戶輸入其只要允許他們輸入類似validates_format_of :string, :with => /[0-9]/之類的數字就簡單了。

相關問題