如何在读取文件时剪切行尾?

时间:2016-09-21 14:09:57

标签: ruby

我正在将文件的内容读入数组。一行中的最后一项是带有行尾字符,这是我不想要的。这就是我正在做的事情:

@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)

如何删除行尾字符?

1 个答案:

答案 0 :(得分:2)

您的代码失败,因为当文件被完全读取时,file.gets会返回nil,并且调用.chomp会引发您提到的错误。

但是,您可以在.chomp()块中调用while,确保line不在nil

例如,而不是

puts "'#{line.split('|')[2]}'"

你可以做到

puts "'#{line.chomp.split('|')[2]}'"