如何使用Ruby检查字符串中是否至少有一个数字?

如何使用Ruby检查字符串中是否至少有一个数字?

问题描述:

我需要检查一个字符串是否包含至少一个使用Ruby的数字(并且我假设某种正则表达式?)。如何使用Ruby检查字符串中是否至少有一个数字?

我该怎么做?

+0

HTTP://public.kvalley。 com/regex/regex.asp – 2010-02-08 20:55:13

可以使用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 
+2

如果您忽略编译正则表达式的开销(如果测试在大循环中完成或者要检查的字符串很长时,这是公平的),那么这可能效率较低。对于退化情况,您的解决方案必须遍历整个字符串,而一旦找到数字,正确的正则表达式就会停止。 – 2010-02-09 15:30:23

+0

虽然这可能不是最有效的,但它是非常可读的,对某些情况可能会更好。 – 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