143 votes

Ruby, Rails - Comment vérifier si une var est un entier

Rails 3 ou Ruby ont-ils une méthode intégrée pour renvoyer true ou false si un var est un entier?

Exemple

 1 returns true
dadadad@asdasd.net returns false?
 

Merci

287voto

mportiz08 Points 3302

Vous pouvez utiliser la méthode is_a?

 >> 1.is_a? Integer
=> true
>> "dadadad@asdasd.net".is_a? Integer
=> false
>>
 

53voto

Alex D Points 14591

Si vous voulez savoir si un objet est un Integer ou quelque chose qui peut être converti de manière significative en un entier (NE PAS inclure des choses comme "hello" , lesquelles to_i seront converties à 0 ):

 result = Integer(obj) rescue false
 

29voto

Jacob Relkin Points 90729

Utilisez une expression régulière sur une chaîne:

 def is_numeric?(obj) 
   obj.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true
end
 

Si vous voulez vérifier si une variable est d'un certain type, vous pouvez simplement utiliser kind_of? :

 1.kind_of? Integer #true
(1.5).kind_of? Float #true
is_numeric? "545"  #true
is_numeric? "2aa"  #false
 

18voto

Edmund Points 2792

Si vous ne connaissez pas le type de la variable (il peut s'agir d'une chaîne de caractères numériques), supposons qu'il s'agisse d'un numéro de carte de crédit transmis aux paramètres. Il s'agirait donc à l'origine d'une chaîne de caractères, mais vous voulez vous assurer qu'elle ne l'est pas. n’ayant aucune lettre, j’utiliserais cette méthode:

     def is_number?(obj)
        obj.to_s == obj.to_i.to_s
    end

    is_number? "123fh" # false
    is_number? "12345" # true
 

5voto

Groxx Points 1053

Il y a var.is_a? Class (dans votre cas: var.is_a? Integer ); cela pourrait faire l'affaire. Ou bien il y a Integer(var) , où il lève une exception s'il ne peut pas l'analyser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X