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

  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • Max Lee

    Max Lee

    18 AĞUSTOS 2006
  • optionalinfo

    optionalinfo

    29 EKİM 2005