SORU
5 AĞUSTOS 2009, ÇARŞAMBA


Eğer bir dize temelde tırnak Ruby kullanarak bir tamsayı olup olmadığını Test edin?

Fonksiyon is_an_integer, yere ihtiyacım var

"12".is_an_integer? returns true
"blah".is_an_integer? returns false

nasıl ruby bunu yapabilir miyim? bir düzenli ifade yazmak ama ben farkında değilim bunun için bir yardımcı yoktur varsayarak ım ben

CEVAP
5 AĞUSTOS 2009, ÇARŞAMBA


İşte kolay yolu:

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

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

Dize dönüştürmek için bir istisna - istisna kontrol akışı olmayan tahrik çözümleri ile aynı fikirde değilim, ve de yapabilirsin. EDİT: O, benim çözüm yukarıda base-sigara 10 tamsayılar ile anlaşma yok " dedi. Burada istisnalar başvurmadan ile yapmanın yolu var:

  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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • Skittles Page

    Skittles Pag

    28 Mart 2011
  • TROPFEST

    TROPFEST

    27 Mart 2007