How to read lines of a file in Ruby

后端 未结 8 1201
轮回少年
轮回少年 2020-12-02 04:16

I was trying to use the following code to read lines from a file. But when reading a file, the contents are all in one line:

line_num=0
File.open(\'xxx.txt\'         


        
相关标签:
8条回答
  • 2020-12-02 04:58

    I believe my answer covers your new concerns about handling any type of line endings since both "\r\n" and "\r" are converted to Linux standard "\n" before parsing the lines.

    To support the "\r" EOL character along with the regular "\n", and "\r\n" from Windows, here's what I would do:

    line_num=0
    text=File.open('xxx.txt').read
    text.gsub!(/\r\n?/, "\n")
    text.each_line do |line|
      print "#{line_num += 1} #{line}"
    end
    

    Of course this could be a bad idea on very large files since it means loading the whole file into memory.

    0 讨论(0)
  • 2020-12-02 04:58

    Your first file has Mac Classic line endings (that’s "\r" instead of the usual "\n"). Open it with

    File.open('foo').each(sep="\r") do |line|
    

    to specify the line endings.

    0 讨论(0)
提交回复
热议问题