2014-03-03 1 views
1

단어 배열에 대해 긴 문자열을 확인하고 일치하는 단어를 선택하고 싶습니다. 단어는 복수 단어 such as 또는 This is 이상일 수 있습니다. 이것은 내가 지금까지 가지고있는 것이다. 배열에 나타나는 문자열에서 전체 단어를 선택하는 방법은 무엇입니까?

str = "This is a demo text for demo..." 
w = ["This is", "to", "is", "for demo"]  
w.select{ |w| str.include?w } #=>["This is", "is", "for demo"] 

하지만 내가 내 결과 "에"를하고 싶지 않아요

,
str = "This is a demo text for demo together within..." 
w = ["This is", "to", "is", "for demo", "in", "get"]  
w.select{ |w| str.include?w } #=> ["This is", "to", "is", "for demo", "in", "get"] 

str.include?w

어떻게해야되는 일을한다 등 "GET". 대안이 있습니까?

+0

try w.select {| w1 | str.include? (w1 + "")} –

+0

충분하지 않습니다, Alok. SO는 'str ='... the ... ''에서 제외되고 'str ='... jumped in ''일 때 'in'이 포함되기를 원합니다. –

답변

5
str = "This is a demo text for demo..." 
w = ["This is", "to", "is", "for demo"]  
p w.select{|w|str =~ /\b#{w}\b/ } 

정규 표현식의 \ b는 단어 경계입니다. # {w}는 문자열과 마찬가지로 보간법입니다.

+0

좋은 1, steen. –

+0

@cary Swoveland 완벽한 대답 선생 –

+1

이것은 매우 산뜻합니다! 매우 아름답다! – Bala

관련 문제