我试图确定一个字符串是否是 Ruby 中的数字。这是我的代码
whatAmI = "32.3a22"
puts "This is always false " + String(whatAmI.is_a?(Fixnum));
isNum = false;
begin
Float(whatAmI)
isNum = true;
rescue Exception => e
puts "What does Ruby say? " + e
isNum = false;
end
puts isNum
我意识到我可以用 RegEx 来做到这一点,但是 有没有我缺少的标准方法来做到这一点? 我见过 can_convert 吗?方法,但我好像没有。
有没有办法添加一个 can_convert?所有字符串的方法? 我知道这在 Ruby 中是可能的。我也明白这可能完全没有必要......
编辑 to_f 方法不起作用,因为它们从不抛出异常,而是在它不起作用时返回 0。
最佳答案
你的想法是对的。不过,它可以做得更紧凑一点:
isNum = Float(whatAmI) rescue nil
内联“救援”非常有趣。如果您将要救援的部分放在更多内容的中间,请将其括起来,例如:
if (isNum = Float(whatAmI) rescue nil) && isNum > 20
...