检查变量是否为整数

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)

  • @AnApprentice从什么时候开始验证电子邮件地址的一部分问题? (61认同)
  • 如果数字出现在像"11111111"这样的字符串中,这将不起作用 (4认同)
  • @Ricbermo"1111111"是一个字符串.恰好可以转换为和Integer的字符串. (4认同)
  • 那太酷了。可以用来验证电子邮件地址吗? (2认同)

Ale*_*x D 48

如果你想知道一个对象是否是一个Integer 或一些东西,可以有意识地转换为一个整数(不包括之类的东西"hello",它to_i会转换成0):

result = Integer(obj) rescue false
Run Code Online (Sandbox Code Playgroud)

  • 整数('08')将失败,因为字符串被解释为八进制,整数('08',10)工作正常.以防万一. (7认同)
  • 也许我只是一个菜鸟,但这个调整对我有帮助.result = Integer(obj)rescue false. (2认同)
  • 我做了,它被拒绝了."这个编辑偏离了帖子的原始意图"但不管怎样,谢谢你的回答,它帮助我解决了我的问题! (2认同)

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)


小智 6

您可以使用三重等于。

if Integer === 21 
    puts "21 is Integer"
end
Run Code Online (Sandbox Code Playgroud)


Gro*_*oxx 5

var.is_a? Class(在你的情况下:) var.is_a? Integer; 这可能符合法案.或者Integer(var),如果无法解析它,它将抛出异常.