删除文本文件中的行
好的,我试图从文件中删除包含 – 的行。 该文件如下所示:
----------------------------------------------------------------- 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
。