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

可能重复:
使用Ruby测试字符串是否基本上是引号中的整数?

 “1”
 “一”

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

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

有一个Integer方法,与to_i不同,如果无法转换,则会引发exception:

 >> Integer "1" => 1 >> Integer "one" ArgumentError: invalid value for Integer(): "one" 

我想你可以使用内联救援:

 Integer(foo) rescue nil 

如果您的字符串可以转换,您将获得整数,否则nil (或者您想要提供的其他任何内容)。

虽然引发exception似乎有点矫枉过正,但是Integer方法是我在Ruby中所知道的最全面的检查(例如“09”将不会转换,因为前导零使其成为八进制而9是无效数字)。 用正则表达式覆盖所有这些案例将是一场噩梦。