删除文本文件中的行

时间:2013-07-25 09:55:40

标签: ruby

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

  -----------------------------------------------------------------
  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 <main>'
    from file.rb:2:in `each_line'
    from file.rb:2:in `<main>'

发生了什么事?

2 个答案:

答案 0 :(得分:2)

  

最近怎么回事?

这样的事情:

line = "-----------------------------------\n"
 => "-----------------------------------\n"

a = line
 => "-----------------------------------\n"

line.delete a
 ArgumentError: invalid range "--
 " in string transliteration

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

"hellob".delete "a-e"
 => "hllo"

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

答案 1 :(得分:1)

正如其他人所说,你可以用grep来做,但是如果你想在Ruby中完成它,那么看看this question,第一个答案可以帮助你。