2010-02-08 4 views

답변

30

당신은 인수와 정규식 /\d/으로 String 클래스의 =~ 방법을 사용할 수 있습니다. 나는 짧은 초 동안 이동

def has_digits?(str) 
    str.count("0-9") > 0 
end 
5
if /\d/.match(theStringImChecking) then 
    #yep, there's a number in the string 
end 
7

: 여기

은 예입니다 [/ \ d /]는 miss (조건 테스트에서 AKA 거짓) 또는 hit (조건 테스트에서 AKA)의 인덱스를 반환합니다. 실제 값이 필요한 경우 s [/ (\ d)/1]

모두 동일해야하며 주로 프로그래머가 선택해야합니다. //public.kvalley : -

def has_digits?(s) 
    return !s[/\d/].nil? 
end 

또는 ... String 클래스에 추가하는 것이 더 편리합니다 -

class String 
    def has_digits? 
    return !self[/\d/].nil? 
    end 
end 
+2

정규 표현식을 컴파일하는 오버 헤드를 무시하면 효율성이 떨어질 수 있습니다. 테스트가 큰 루프에서 수행되거나 검사 할 문자열이 매우 길면 매우 공평합니다. 퇴행성 사건의 경우 솔루션은 전체 문자열을 탐색해야하지만 올바른 정규 표현식은 숫자가 발견되는 즉시 중지됩니다. –

+0

이 기능은 최대한 효율적이지 않을 수도 있지만 매우 읽기 쉽기 때문에 특정 상황에서 더 좋을 수 있습니다. –

2

보다는 "S = ~/\ 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
!s[/\d/].nil? 

는 독립 함수가 될 수 있습니다. com/regex/regex.asp
관련 문제