Ruby:检查字符串是否可以转换为整数

时间:2012-05-14 05:12:52

标签: ruby

  

可能重复:
  Test if a string is basically an integer in quotes using Ruby?

"1"
"one"

第一个字符串是一个数字,我可以说to_i得到一个整数 第二个字符串也是一个数字,但我不能直接调用to_i来获得所需的数字。

如何检查是否可以使用to_i成功转换?

1 个答案:

答案 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是一个无效的数字)。用正则表达式覆盖所有这些案例将是一场噩梦。