2012-02-27 11 views
1

私は文字列"08"を持っており、この文字列が数値かどうかを知りたいと思っています。 Rails 3.1でどうすればいいですか?これを実行する別の方法は、それを決定するためにルビーためにそれを残すことである文字列が数値かどうかを確認する方法はありますか?

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

文字列がある場合は文字列です。あなたは何を知る必要がありますか?文字列に数字だけが含まれていれば? – lucapette

+0

あなたがRailsを使っているので、*や*ここで*しようとしているときは重要だと思います。言い換えれば、これはデータベースに値を格納するためですか? –

答えて

4

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

+1は創造的な怠惰です。途中で '+ 3'と' 10e6 'を捕まえるために。 –

3

あなたは正規表現を使用することができますvalidates_format_of :string, :with => /[0-9]/のような数字を入力できるようにするだけで簡単です。

+0

これはあまりにも複雑に思えます。ちょうど一緒に行かないでください:str =〜/ ^(\ d +)$/ – Forrest

+0

@Forrestこれは10進数なので、あなたの正規表現は一致しません。 –

+0

@Forrest: '/^\ d + $'は負の値にも一致しません。 OTOH、 '/^- ?(\ d +(\。\ d +)?| \。\ d +)$ /'は指数表記と '+ 3 ' –

0

あなたはユーザー入力にそれを検証するために欠けている場合は

関連する問題