2012-05-14 13 views

risposta

19

C'è un metodo Integer che a differenza to_i solleverà un'eccezione se non è possibile convertire:

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

Credo che si potrebbe utilizzare quello con un salvataggio in linea:

Integer(foo) rescue nil 

Se la stringa può essere convertito, riceverai il numero intero, altrimenti nil (o qualsiasi altra cosa tu voglia mettere dietro allo rescue).

Pur avendo un'eccezione sollevata può sembrare eccessivo, il metodo Integer è il controllo più completo che conosco in Ruby (ad esempio "09" non verrà convertito perché lo zero iniziale lo rende ottale e 9 è una cifra non valida) . Coprendo tutti questi casi con espressioni regolari sarà un incubo.

Problemi correlati