我想确定一个字符串是否是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
Run Code Online (Sandbox Code Playgroud)
我意识到我可以用RegEx做到这一点,但有没有任何标准的方法可以做到这一点,我错过了?我见过can_convert?方法,但我似乎没有.
有没有办法添加can_convert?所有字符串的方法?我知道在Ruby中它是可能的.我也明白这可能是完全不必要的......
编辑 to_f方法不起作用,因为它们从不抛出异常,而只是返回0,如果它没有用完.
你有正确的想法.但是,它可以更紧凑地完成:
isNum = Float(whatAmI) rescue nil
Run Code Online (Sandbox Code Playgroud)
内联"救援"非常有趣.如果你把它放在更多东西的中间,请将你正在营救的部分括起来,例如:
if (isNum = Float(whatAmI) rescue nil) && isNum > 20
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18634 次 |
| 最近记录: |