ruby-on-rails – 如何确定字符串是否为数字?

我觉得这会更容易找到,但我很惊讶它不是.

我如何测试一个字符串是否是模型外的数字(包括小数)?

例如

is_number("1") # true
is_number("1.234") # true
is_number("-1.45") # true
is_number("1.23aw") #false

在PHP中,有is_numeric,但我似乎无法在Ruby(或Rails)中找到等价物.

到目前为止,我已经阅读了以下答案,并且没有更接近:

> Ruby on Rails – Validate a Cost
> Ruby/Rails – How can you validate against decimal scale?
> invalid decimal becomes 0.0 in rails

解决方法

您可以借用 NumericalityValidator Rails用于验证数字的想法,它使用 Kernel.Float方法:
def numeric?(string)
  # `!!` converts parsed number to `true`
  !!Kernel.Float(string) 
rescue TypeError,ArgumentError
  false
end

numeric?('1')   # => true
numeric?('1.2') # => true
numeric?('.1')  # => true
numeric?('a')   # => false

它还处理以科学记数法书写的符号,十六进制数字和数字:

numeric?('-10')   # => true
numeric?('0xFF')  # => true
numeric?('1.2e6') # => true

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...