我试图确定一个字符串是否是 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
  ...

10-06 00:31