2016-05-02 12 views
-1

Ich versuche, herauszufinden, ob eines der Wörter in dem Array keywords:prüfen, ob ein String ein Array von Strings enthält

keywords = Array['hello', 'hi', 'home'] 

erscheinen in split:

split = work.split(' ') 

und für jede keyword, die in split erscheint, etwas tun.

Ich habe diesen Code:

for keywords in splitDescription 
    score += 2 
end 

Der Code gibt mir einfach für jedes Wort 2+ in split, aber ich möchte nur 2+ für jeden keywords in split erscheinen.

+1

Ein paar Dinge über das Schreiben von idiomatischem Ruby: Verwenden Sie 'x = [1, 2, 3]', nicht 'x = Array [1, 2, 3]' (das 'Array' ist hier überflüssig) zum Erstellen von Arrays und verwenden Sie' keywords.each do | keyword | 'anstelle von' for keyword in keywords'. – meagar

+0

Was ist 'Arbeit'? Was meinst du damit, dass es dir 2+ gibt? – sawa

+0

"Arbeit" speichert eine Zeichenfolge und um 2+ ich meine die Punktzahl um 2 erhöht –

Antwort

4

Verwenden Set Kreuzung auf Arrays (Array#&):

(splitDescription & keywords).each do |found_keyword| 
    # something 
end 

Wenn Sie es wissen, könnten einige Worte zu wiederholen, und Sie wollen jedes Vorkommen iterieren:

splitDescription.select { |word| keywords.include?(word) }.each do |word| 
    # something 
end 
Verwandte Themen