2017-11-04 35 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 |放置...}可能更好。 –

相关问题