2

我是这里的新用户,也是 Ruby 的初学者。我需要从 中消除负值(数字)is_numeric?。所以代码是这样的:

class String
  def is_number?
    true if Float(self) rescue false
  end
end

这给了我正数和负数,而我只需要得到正数。有没有办法在这种方法中消除负数?如果没有,那么任何其他方式也值得赞赏。

4

2 回答 2

5
class String
  def is_number?
    Float(self) >= 0 rescue false
  end
end
于 2013-03-29T12:29:30.760 回答
1

像这样的东西应该工作:

class String
  def is_number?
    f = Float(self) 
    f && f >= 0
  rescue
    false
  end
end

'1'.is_number? # => true
'-1'.is_number? # => false
'0.0'.is_number? # => true
'4.12'.is_number? # => true
'-10_000'.is_number? # => false
于 2013-03-29T12:27:02.003 回答