たとえば、文字列 があり'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