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
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
Eğer bir dize temelde tırnak Ruby kull...
Gerçekten Ucuz bir Komut Satırı Seçene...
Nasıl Ruby ikili dize veya tamsayı dön...
Objective C onaltılık dize tamsayı içi...
ruby dize, tamsayı veya kayan noktalı ...