如何使用Ruby检查字符串中是否至少有一个数字?
可以使用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
if /\d/.match(theStringImChecking) then
#yep, there's a number in the string
end
另外,不使用正则表达式:
def has_digits?(str)
str.count("0-9") > 0
end
如果您忽略编译正则表达式的开销(如果测试在大循环中完成或者要检查的字符串很长时,这是公平的),那么这可能效率较低。对于退化情况,您的解决方案必须遍历整个字符串,而一旦找到数字,正确的正则表达式就会停止。 – 2010-02-09 15:30:23
虽然这可能不是最有效的,但它是非常可读的,对某些情况可能会更好。 – 2014-04-04 09:29:05
而不是使用类似 “S =〜/ \ d /”,我去的短小号[/ \ d /]返回一个未命中的错误(在条件测试中AKA错误)或命中的索引(在有条件测试中AKA为真)。如果你需要使用实际的值,那么它应该都是相同的,并且主要是程序员的选择。
!s[/\d/].nil?
可以是独立的功能 -
def has_digits?(s)
return !s[/\d/].nil?
end
或...将其添加到String类使得它更方便 -
class String
def has_digits?
return !self[/\d/].nil?
end
end
HTTP://public.kvalley。 com/regex/regex.asp – 2010-02-08 20:55:13