「1」 "1"
最初の文字列は数値であり、to_iと言うだけで整数を取得できます。
2番目の文字列も数値ですが、to_iを直接呼び出して目的の数値を取得することはできません。
to_iを使用して正常に変換できるかどうかを確認するにはどうすればよいですか?
「1」 "1"
最初の文字列は数値であり、to_iと言うだけで整数を取得できます。
2番目の文字列も数値ですが、to_iを直接呼び出して目的の数値を取得することはできません。
to_iを使用して正常に変換できるかどうかを確認するにはどうすればよいですか?
変換できない場合とは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」は変換されません)。これらすべてのケースを正規表現でカバーすることは悪夢になります。