11

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

“1”
“一”

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

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

4

1 回答 1

24

有一种Integer方法,to_i如果它不能转换,就会引发异常:

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

我想您可以将其与内联救援一起使用:

Integer(foo) rescue nil

如果您的字符串可以转换,您将获得整数,否则nil(或您想放在后面的任何其他内容rescue)。

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

于 2012-05-14T07:33:08.877 回答