2017-11-04 75 views
0

我是新手!我有一個包含文本行和行的文本文件。我想嘗試創建一個代碼,只允許顯示短語「larry.bird」的行,而其他行則被刪除。這是我現在的代碼...Ruby從文本文件中過濾特定行

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 

如果你能幫助我,那太棒了!

回答

1

你非常接近。您正在打開並正確讀取文件;你只是在執行檢查之前意外打印每一行。代碼的第二行上的puts line確保發生這種情況。

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

我們還可以縮短Ruby中的單行if語句,使用經常使代碼更加簡潔的後綴表示法。

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

這相當於第一個例子。

+0

國際海事組織,單線'如果'在噪音中丟失(太多的條款在它的左邊)。相反,因爲'each_line'返回'Enumerator','each_line.reject {| line | line.include?(...)} .each {| line |放置...}可能更好。 –