11

重複の可能性:
Rubyを使用して、文字列が基本的に引用符で囲まれた整数であるかどうかをテストしますか?

「1」
"1"

最初の文字列は数値であり、to_iと言うだけで整数を取得できます。
2番目の文字列も数値ですが、to_iを直接呼び出して目的の数値を取得することはできません。

to_iを使用して正常に変換できるかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

24

変換できない場合とはInteger異なり、例外を発生させるメソッドがあります。to_i

>> Integer "1"
=> 1
>> Integer "one"
ArgumentError: invalid value for Integer(): "one"

私はあなたがインラインレスキューでそれを使うことができると思います:

Integer(foo) rescue nil

文字列を変換できる場合は整数を取得し、そうでない場合nil(またはの後ろに置きたいものrescue)を取得します。

例外を発生させるのはやり過ぎのように思えるかもしれませんが、このIntegerメソッドは、Rubyで私が知っている最も包括的なチェックです(たとえば、先行ゼロは8進数になり、9は無効な数字であるため、「09」は変換されません)。これらすべてのケースを正規表現でカバーすることは悪夢になります。

于 2012-05-14T07:33:08.877 に答える