2012-05-14 12 views
8

Olası Çoğalt:
Test if a string is basically an integer in quotes using Ruby?Yakut: bir dize bir tamsayı dönüştürülebilir olmadığını kontrol

 
"1" 
"one" 

ilk dize bir sayıdır ve ben sadece to_i söyleyebiliriz bir tam sayı olsun.
İkinci dize de bir sayıdır, ancak istenen sayıyı almak için doğrudan to_i'yi arayamıyorum.

to_i'yi kullanarak başarılı bir şekilde dönüştürüp dönüştüremediğimi nasıl kontrol edebilirim?

>> Integer "1" 
=> 1 
>> Integer "one" 
ArgumentError: invalid value for Integer(): "one" 

Sana bir satır içi kurtarma ile kullanabilirsin sanırım:

Integer(foo) rescue nil 

dize ise

cevap

19

o dönüştüremiyorsa to_i aksine bir istisna olacak bir Integer yöntemi var aksi halde nil (ya da rescue'un arkasına ne koymak istersen) tamsayıyı alırsınız.

Yükseltilmiş bir istisna yaşanırken aşırı sıkışık görünebilirken, Ruby'de bildiğim en kapsamlı denetim, Integer yöntemidir (örneğin "09", baştaki sıfırın sekizlik ve geçersiz bir basamak olduğu için "09" dönüştürmez) . Bütün bu vakaları düzenli ifadelerle ele almak bir kabus olacak.

İlgili konular