2014-05-16 3 views

답변

12

예 아래와 같이 :이 쓸 수있는 더 좋은 방법이 있습니다 Enumerable#any?

지정된 블록에 컬렉션의 각 요소를 전달합니다 : 여기

if %w(string1 string2 string3).any? { |s| my_string.include? s } 
    # your code 
end 

이 문서입니다 . 블록이 false 또는 nil이 아닌 값을 반환하면 메서드는 true을 반환합니다. 블록이 주어지지 않으면 Ruby는 { |obj| obj }의 암시 적 블록을 추가하여? 적어도 1 개 (살)의 컬렉션 멤버가 false 또는 nil가 아닌 경우는 true를 돌려줍니다.
[13] pry(main)> ary = %w(string1 string2 string3) 
=> ["string1", "string2", "string3"] 
[14] pry(main)> Regexp.union(ary) 
=> /string1|string2|string3/ 
[15] pry(main)> "abbcstring2"[Regexp.union(ary)] 
=> "string2" 
[16] pry(main)> "abbcstring"[Regexp.union(ary)] 
=> nil 

그냥 Regexp::unionstr[regexp] → new_str or nil 읽기 : 여기

다른 방법 (더 빠르게)입니다.

+2

와우를 걸고 (여기에 정규 표현식을 사용할 수 있습니다! 매우 예쁘고 정확합니다 :) – Pavan

+0

오, 정말 고맙습니다. 감사합니다. – Kuroun

3

글쎄, 당신은 항상 다른 jwz 인용 :

if mystring =~ /string1|string2|string3/ 
    ... 
end 
관련 문제