我需要检查一个字符串是否包含至少一个使用Ruby的数字(我假设某种正则表达式?)。
我该怎么做?
答案 0 :(得分:35)
您可以使用String
类的=~
方法,并使用正则表达式/\d/
作为参数。
以下是一个例子:
s = 'abc123'
if s =~ /\d/ # Calling String's =~ method.
puts "The String #{s} has a number in it."
else
puts "The String #{s} does not have a number in it."
end
答案 1 :(得分:7)
或者,不使用正则表达式:
def has_digits?(str)
str.count("0-9") > 0
end
答案 2 :(得分:5)
if /\d/.match( theStringImChecking ) then
#yep, there's a number in the string
end
答案 3 :(得分:2)
我没有使用像“s =〜/ \ d /”这样的东西,而是选择较短的s [/ \ d /],它返回nil表示未命中(条件测试中为AKA false)或命中的索引(AKA在条件测试中是真的)。如果需要实际值,请使用s [/(\ d)/,1]
它应该都是一样的,并且在很大程度上是程序员的选择。
答案 4 :(得分:1)
!s[/\d/].nil?
可以是独立功能 -
def has_digits?(s)
return !s[/\d/].nil?
end
或...将它添加到String类使它更方便 -
class String
def has_digits?
return !self[/\d/].nil?
end
end