2017-11-04 8 views
0

Ich bin ein Neuling! Ich habe eine Textdatei, die Zeilen und Zeilen enthält. Ich möchte versuchen, einen Code zu erstellen, der nur die Zeilen erlaubt, die die Phrase "larry.bird" zeigen, während die anderen gelöscht werden. Das ist mein derzeitiger Code ...Ruby filtern bestimmte Zeilen aus einer Textdatei

File.open("HM.txt").each do |line| 
   puts line 
   if line.include? "larry.bird" 
      puts "larye.bird " + line 
   end 
end 

File.readlines('HM.txt') do |li| 
  puts li if (li['larry.bird']) 
end 

Wenn du mir helfen kannst, wäre das super!

Antwort

1

Sie sind ziemlich nah dran. Sie öffnen und lesen die Datei korrekt. Sie drucken nur versehentlich jede Zeile, bevor Sie die Prüfung durchführen. Die puts line in der zweiten Zeile Ihres Codes stellt sicher, dass dies auftritt.

Wir können auch one-line if-Anweisungen in Ruby verkürzen, indem wir die Suffix-Notation verwenden, die den Code oft prägnanter macht.

File.open("HM.txt") do |file| 
    file.each_line do |line| 
    puts "larry.bird " + line if line.include? "larry.bird" 
    end 
end 

Dies entspricht dem ersten Beispiel.

+0

IMO, dass One-Line 'if' im Rauschen verloren geht (zu viele Klauseln auf der linken Seite). Statt dessen gibt 'each_line' einen'Enumerator' zurück,' each_line.reject {| line | line.include? (...)} .each {| line | puts ...} 'ist wahrscheinlich schöner. –

Verwandte Themen