好的,我试图从文件中删除包含 - 的行。该文件如下所示:
-----------------------------------------------------------------
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>'
发生了什么事?
答案 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,第一个答案可以帮助你。