如何确定字符串是否为数字?

时间:2010-12-27 12:30:58

标签: ruby-on-rails ruby ruby-on-rails-3

在Rails 3中查找字符串str是否包含正浮点数的最简单方法是什么? (str不是活动记录模型中的属性)

它应该像这样工作:

str = "123"         =>     true
str = "123.456"     =>     true
str = "0"           =>     true
str = ""            =>     false
str = "abcd"        =>     false
str = "-123"        =>     false

2 个答案:

答案 0 :(得分:7)

这是一个想法:

class String
  def nonnegative_float?
    Float(self) >= 0
  rescue ArgumentError
    return false
  end
end

但是,由于您似乎已经非常了解非负浮点数的含义,因此您也可以将其与Regexp匹配:

class String
  def nonnegative_float?
    !!match(/\A\+?\d+(?:\.\d+)?\Z/)
  end
end

答案 1 :(得分:0)

您可以将其与正则表达式进行匹配。

str === /^\d+(\.\d+)?$/