Схема URI данных и ошибки Internet Explorer 9

Ну, вот простой способ:

class String
  def is_integer?
    self.to_i.to_s == self
  end
end

>> "12".is_integer?
=> true
>> "blah".is_integer?
=> false

EDIT: Я не согласен с решениями, которые вызывают исключение для преобразования строки. Исключения - это не поток управления, и вы также можете сделайте это правильно. Тем не менее, мое решение выше не касается целых чисел, отличных от base-10. Итак, вот как это сделать, не прибегая к исключениям:

  class String
    def integer? 
      [                          # In descending order of likeliness:
        /^[-+]?[1-9]([0-9]*)?$/, # decimal
        /^0[0-7]+$/,             # octal
        /^0x[0-9A-Fa-f]+$/,      # hexadecimal
        /^0b[01]+$/              # binary
      ].each do |match_pattern|
        return true if self =~ match_pattern
      end
      return false
    end
  end
22
задан Andy 23 September 2014 в 19:41
поделиться