SORU
8 EYLÜL 2008, PAZARTESİ


Ruby güvenli tamsayı ayrıştırma

Bir dize, '123', söylemek zorundayım ve 123 dönüştürmek istiyorum.

Sadece some_string.to_i, yapabileceğini biliyorum ama o 'lolipops' değil etkisi olan 0, akılda dönüştürür. Bir şey geçersiz dönüştürmeye çalıştığımda güzel ve acı Exception gözümün önünde havaya uçurmak istiyorum. Aksi halde, geçerli bir 0 ve sadece bir sayı değil bir şey arasındaki farkı ayırt edemem.

DÜZENLEME:Bu, düzenli hile olmadan yapmanın standart yolu arıyordum.

CEVAP
8 EYLÜL 2008, PAZARTESİ


Ruby bu işlevsellik inşa etti:

Integer('1001')                                    # => 1001  
Integer('1001 nights')  
# ArgumentError: invalid value for Integer: "1001 nights"  

Belirtildiği gibi cevap Joseph Pecoraro, isteyebilirsiniz izlemek için dizeleri geçerli olmayan, ondalık sayı olarak o ile başlayan 0x hex ve 0b ikili ve potansiyel olarak daha zor numaraları ile başlayan sıfır incelenemeyecek olarak sekizli.

Ruby 1.9.2 çok sorun yukarıda taban için isteğe bağlı ikinci argüman önlenebilir ekledi:

Integer('23')                                     # => 23
Integer('0x23')                                   # => 35
Integer('023')                                    # => 19
Integer('0x23', 10)
# => #<ArgumentError: invalid value for Integer: "0x23">
Integer('023', 10)                                # => 23

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • case LianLi

    case LianLi

    28 Mayıs 2010
  • ParryGripp

    ParryGripp

    12 AĞUSTOS 2006
  • Ralph Phillips

    Ralph Philli

    5 Aralık 2006