如何检查Ruby中的字符串是否为整数?

时间:2013-09-17 09:15:02

标签: ruby

我有一个字符串"1234223",我想检查该值是否为整数/数字。

我怎么能在一行中做到这一点?

我试过了

1 =~ /^\d+$/ 
 => nil

"1a" =~ /^\d+$/
 => nil

两行都返回nil

4 个答案:

答案 0 :(得分:16)

如果您尝试保留与原始帖子类似的语义,请使用以下任一方法:

"1234223" =~ /\A\d+\z/ ? true : false
#=> true

!!("1234223" =~ /\A\d+\z/)
#=> true

使用Ruby 2.4的新Regexp#match?方法返回布尔结果的更惯用的构造也会做同样的事情,同时也看起来更清洁。例如:

"1234223".match? /\A\d+\z/
#=> true

答案 1 :(得分:12)

Integer("123") rescue nil怎么样?

答案 2 :(得分:2)

您可以使用regex

"123".match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true

它还会检查decimals

答案 3 :(得分:1)

"1234223".tap{|s| break s.empty? || s =~ /\D/}.!