Как определить, является ли строка числом? - PullRequest
2 голосов
/ 27 декабря 2010

Какой самый простой способ узнать в Rails 3, содержит ли строка str положительное число с плавающей точкой или нет? (str не является атрибутом в модели активной записи)

Это должно работать так:

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

Ответы [ 2 ]

7 голосов
/ 27 декабря 2010

Вот одна идея:

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
0 голосов
/ 27 декабря 2010

Вы можете сопоставить его с регулярным выражением.

str === /^\d+(\.\d+)?$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...