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

  • Booredatwork.com

    Booredatwork

    5 Ocak 2009
  • Caroline Saquet

    Caroline Saq

    1 EKİM 2011
  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009