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

Mis*_*hko 2 ruby ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

Jör*_*tag 7

这是一个想法:

class String
  def nonnegative_float?
    Float(self) >= 0
  rescue ArgumentError
    return false
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,由于您似乎已经非常了解非负浮点数的含义,因此您还可以将它与以下内容进行匹配Regexp:

class String
  def nonnegative_float?
    !!match(/\A\+?\d+(?:\.\d+)?\Z/)
  end
end
Run Code Online (Sandbox Code Playgroud)

  • @Phrogz:不幸的是,OP的要求规范是*令人难以置信的*模糊,他的测试覆盖率也不是很好,所以它基本上是猜测.你假设".123"有效,即使它没有测试用例.我假设`'+ 123'`是有效的,''123'`不是,即使没有测试用例.一个更好的答案基本上需要一个更好的问题. (3认同)