检查Ruby中的字符串是否只包含正数

use*_*131 8 ruby string

我是新手,想要知道是否可以使用或其他函数来检查字符串是否仅包含正数?

str = "123abcd"  #return false because it contains alphabets
str = "153"      #return true because of all numbers
Run Code Online (Sandbox Code Playgroud)

saw*_*awa 20

到目前为止使用正则表达式的所有其他答案都是低效的.

"123abcd" !~ /\D/ # => false
"153" !~ /\D/     # => true
Run Code Online (Sandbox Code Playgroud)

  • 我同意,因为它简单,我投了你的答案.但是,我不认为我会在代码审查中标记任何人使用`= ~`而不是`!~`.正则表达式仍然相当有效."效率低下"!="效率低下". (3认同)

Мал*_*евъ 5

当然Regexp对此有好处:

string = "123abcd"
/^(?<num>\d+)$/ =~ string
num # => nil

string = "123"
/^(?<num>\d+)$/ =~ string
num # => '123' # String
Run Code Online (Sandbox Code Playgroud)

所以如果你需要检查条件:

if /^(?<num>\d+)$/ =~ string
   num.to_i # => 123
   # do something...
end
Run Code Online (Sandbox Code Playgroud)

#to_i方法String对你的情况无效,因为它会返回一个数字,如果字符串是偶数字母:

string = "123abcd"
string.to_i # 123
Run Code Online (Sandbox Code Playgroud)