删除文本文件中的行

好的,我试图从文件中删除包含 – 的行。 该文件如下所示:

----------------------------------------------------------------- Lorem ipsum.... Text..... 

我的代码:

  f = File.open('C:\websites\ahr.txt') f.each_line do |line| if line.include? '-' a = line line.delete a end end f = File.close 

但它不会起作用! 我收到此错误:

  file.rb:5:in `delete': invalid range "-- (ArgumentError) " in string transliteration from file.rb:5:in `block in ' from file.rb:2:in `each_line' from file.rb:2:in `' 

这是怎么回事?

正如其他人所说,你可以用grep来做,但是如果你想在Ruby中完全做到这一点,那么看看这个问题 ,第一个答案应该对你有帮助。

发生什么了?

像这样的东西:

 line = "-----------------------------------\n" => "-----------------------------------\n" a = line => "-----------------------------------\n" line.delete a ArgumentError: invalid range "-- " in string transliteration 

delete方法引发的错误是因为破折号用于特殊字符范围语法:

 "hellob".delete "ae" => "hllo" 

您可能希望采用不同的方法来解决您的目标,但很难说出您想要的内容,因为一旦删除行,您就不会显示您想要对数据执行的操作。 简单地处理line变量只意味着你在那一点上有一个改变的String