3

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

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

我努力了

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

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

两条线都返回零

4

4 回答 4

19

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

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

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

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

"1234223".match? /\A\d+\z/
#=> true
于 2013-09-17T09:24:12.340 回答
16

怎么样Integer("123") rescue nil

于 2013-09-17T11:24:46.667 回答
2

您可以使用regex

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

它还将检查decimals.

于 2013-09-17T09:25:07.327 回答
1
"1234223".tap{|s| break s.empty? || s =~ /\D/}.!
于 2013-09-17T09:30:47.460 回答