我有一个字符串"1234223"
,我想检查该值是否为整数/数字。
我怎么能在一行中做到这一点?
我试过了
1 =~ /^\d+$/
=> nil
"1a" =~ /^\d+$/
=> nil
两行都返回nil
答案 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/}.!