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