AnA*_*ice 132 ruby ruby-on-rails-3
Rails 3或Ruby是否有内置方法来检查变量是否为整数?
例如,
1.is_an_int #=> true
"dadadad@asdasd.net".is_an_int #=> false?
Run Code Online (Sandbox Code Playgroud)
mpo*_*z08 261
您可以使用该is_a?方法
>> 1.is_a? Integer
=> true
>> "dadadad@asdasd.net".is_a? Integer
=> false
>>
Run Code Online (Sandbox Code Playgroud)
Ale*_*x D 48
如果你想知道一个对象是否是一个Integer 或一些东西,可以有意识地转换为一个整数(不包括之类的东西"hello",它to_i会转换成0):
result = Integer(obj) rescue false
Run Code Online (Sandbox Code Playgroud)
Jac*_*kin 29
在字符串上使用正则表达式:
def is_numeric?(obj)
obj.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true
end
Run Code Online (Sandbox Code Playgroud)
如果要检查变量是否属于某种类型,可以使用kind_of?:
1.kind_of? Integer #true
(1.5).kind_of? Float #true
is_numeric? "545" #true
is_numeric? "2aa" #false
Run Code Online (Sandbox Code Playgroud)
big*_*ato 15
如果您不确定变量的类型(它可能是一串数字字符),请说它是传递给参数的信用卡号,所以它最初是一个字符串,但你想确保它没有'我有任何字母字符,我会使用这种方法:
def is_number?(obj)
obj.to_s == obj.to_i.to_s
end
is_number? "123fh" # false
is_number? "12345" # true
Run Code Online (Sandbox Code Playgroud)
@Benny指出对这种方法的疏忽,记住这一点:
is_number? "01" # false. oops!
Run Code Online (Sandbox Code Playgroud)