2017-01-22 11 views
2

사용자 입력이 RegEx [a-zA-z]과 일치하는지 확인하려고하므로 적절한 방법으로 문서를 검사했습니다. 나는 Ruby-doc.orgmatch?을 발견하고 IRB에 문서의 예를 복사, 대신 true의 나는이 받고 있어요 :NoMethodError : 정의되지 않은 메서드`match? ' "Ruby": 문자열

2.3.3 :001 > "Ruby".match?(/R.../) 
NoMethodError: undefined method `match?' for "Ruby":String 
Did you mean? match 
     from (irb):1 
     from /usr/local/rvm/rubies/ruby-2.3.3/bin/irb:11:in `<main>' 

왜이 방법은 내 IRB에서 작동하지 않습니다?

+2

나는 2.3.3을 사용하고 있으며 문서는 2.4.0입니다. 관련성이있을 수 있습니다. –

+0

예, 그렇습니다. 감사합니다 – ToTenMilan

답변

7

String#match?Regexp#match?루비 2.4 새로운 방법입니다. herehere을 확인하십시오.

이 새로운 구문은이라는 별칭뿐만 아니라 입니다. 주로 다른 메서드보다 빠르기 때문에 $~ 전역 개체를 업데이트하지 않습니다. this 벤치 마크에 따르면 다른 방법보다이 3 배 빠른 까지 실행됩니다.

BTW, 당신의 목표를 달성하기 위해 (문자열이 정규식과 일치하는지 여부를 확인), 당신은 [1] 갱신 당신의 루비 버전이 새로운 기능을 사용할 수 있습니다 또는 [2] 다른 접근 방식을 사용합니다.

예를 들어, 당신은 발견되지 않는 경우는 전무을 반환 =~ operator, 또는 matchs이 시작 위치를 사용할 수 있습니다. 다음과 같이 사용할 수 있습니다 :

if "Ruby" =~ /R.../ 
    puts "found" 
end 
+0

구문 오류가 발생했습니다. 나는 자유를 편집하도록했다. –

+0

@EricDuminil 물론, 나는 눈치 채지 못했다. 감사! – mrlew