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

  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • hytchme

    hytchme

    9 Mart 2014
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009