Alle gioved25 ottobre 2007, Randy Kramer ha scritto:
> Can anybody point me to a way to check if a string represents a valid
> integer and then convert it to an integer?
>
> It is very likely the string will contain leading zeros, and should not
> contain any trailing non-numeric characters.
>
> Per the documentation (pickaxe 2), to_i won't quite do it, it will just
> ignore trailing non-numeric characters.
>
> Thanks!
>
> Randy Kramer

Kernel.Integer can convert a string to a number raising an exception if it has 
the wrong format. The only problem lies in the fact that it treats a string 
with leading zeros as an octal number (for example, Integer("000123") gives 
83). To avoid this, you can use gsub on the string:

Integer("000123".gsub(/^0+/,''))
=> 123

I hope this helps