可能重复:
Test if a string is basically an integer in quotes using Ruby?
"1" "one"
第一个字符串是一个数字,我可以说to_i得到一个整数 第二个字符串也是一个数字,但我不能直接调用to_i来获得所需的数字。
如何检查是否可以使用to_i成功转换?
答案 0 :(得分:22)
有Integer
方法与to_i
不同,如果无法转换,则会引发异常:
>> Integer "1"
=> 1
>> Integer "one"
ArgumentError: invalid value for Integer(): "one"
我猜你可以在内联救援中使用它:
Integer(foo) rescue nil
如果您的字符串可以转换,您将获得整数,否则nil
(或者您希望放在rescue
后面的任何其他内容)。
虽然引发异常可能看起来有点过分,但Integer
方法是我在Ruby中所知道的最全面的检查(例如“09”将不会转换,因为前导零使其成为八进制而9是一个无效的数字)。用正则表达式覆盖所有这些案例将是一场噩梦。