Rubyでの安全な整数解析 質問する

Rubyでの安全な整数解析 質問する

たとえば、文字列 があり'123'、それを整数 に変換したいと考えています123

単に とすればよいことはわかっていますsome_string.to_iが、'lolipops'に変換され0てしまいます。これは私が考えている効果ではありません。無効なものを変換しようとしたときに、痛ましい で失敗してほしいのですException。そうしないと、有効な0と数値ではないものを区別できません。

編集:私は正規表現を使わずに、標準的な方法を探していました。

ベストアンサー1

Ruby には次の機能が組み込まれています:

Integer('1001')                                    # => 1001  
Integer('1001 nights')  
# ArgumentError: invalid value for Integer: "1001 nights"  

回答で述べたようにジョセフ・ペコラロ0x、16 進数の場合は 、2 進数の場合は で始まる有効な非10 進数の文字列や、8 進数として解析される可能性のある 0 で始まるより複雑な数値などに注意する必要0bがあります。

Ruby 1.9.2 では、基数にオプションの 2 番目の引数が追加されたため、上記の問題を回避できます。

Integer('23')                                     # => 23
Integer('0x23')                                   # => 35
Integer('023')                                    # => 19
Integer('0x23', 10)
# => #<ArgumentError: invalid value for Integer: "0x23">
Integer('023', 10)                                # => 23

おすすめ記事