2017-04-18 2 views
0

Ich verwende eine Textdatei mit Zeilen von Filmen. Wenn ein Benutzer Oz eingibt, möchte ich alle Filme in der Datei ausgeben, in denen das Wort Oz enthalten ist.Wie erhalte ich Übereinstimmungen aus einer Textdatei und gebe sie in einem Array aus?

Das ist was ich bisher habe.

puts "Enter the keyword you want to search for: " 
keyword = gets 
movies_file = File.new("movies.txt", "r") 
movies = movies_file.read 
movies_list = movies.split(" ") 
match_list = [] 
movies_list.each do |w| 
    matchObj = w.match(keyword) 
    if matchObj then 
    matchlist.push(matchObj.captures[0]) 
    end 
end 
match_list.each do |title| 
    puts title 
end 
+0

Welches Format (falls vorhanden) enthält die Textdatei? –

+0

Es ist in einer TXT-Datei. – LxM3078

Antwort

1

Vorausgesetzt haben Sie die Datei wie folgt organisiert bekommen:

Wizard of Oz 
Battlefield Earth 
Twilight 
Ozymandias 

Dann können Sie es auf diese Weise lesen:

lines = File.readlines('movies.txt').map(&:chomp) 

Dann passende Zeilen zu finden:

matches = lines.grep(phrase) 

Es gibt keine Notwendigkeit für alle each Zeug. Auch die then auf einer if ist fast nie da drin, es ist einfach nutzlose Dekoration.

Verwandte Themen