我正在将文件的内容读入数组。一行中的最后一项是带有行尾字符,这是我不想要的。这就是我正在做的事情:
@arr = []
File.open('somefile.txt', 'r') do |file|
while (line = file.gets)
puts "'#{line.split('|')[2]}'"
@arr << line
end
end
文件中的数据如下所示:
col1|col2|col3
col1|col2|col3
col1|col2|col3
对于col3
,它包含行尾字符。我可以从上面的puts
告诉我们,它输出:
“COL3
“
我已经尝试过file.gets.chomp,但会引发以下错误:
未定义的方法`chomp'代表nil:NilClass(NoMethodError)
如何删除行尾字符?
答案 0 :(得分:2)
您的代码失败,因为当文件被完全读取时,file.gets
会返回nil
,并且调用.chomp
会引发您提到的错误。
但是,您可以在.chomp()
块中调用while
,确保line
不在nil
。
例如,而不是
puts "'#{line.split('|')[2]}'"
你可以做到
puts "'#{line.chomp.split('|')[2]}'"