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

  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • OVERWERK

    OVERWERK

    6 Temmuz 2010
  • SHAYTARDS

    SHAYTARDS

    1 EKİM 2008