我试图使用以下代码从文件中读取行。但是在读取文件时,内容都在一行中:
line_num=0 File.open('xxx.txt').each do |line| print "#{line_num += 1} #{line}" end
但是这个文件单独打印每一行。
我必须使用标准输入,例如ruby my_prog.rb < file.txt,我不能假设文件使用的行尾字符是什么。我该如何处理?
ruby my_prog.rb < file.txt
我相信我的回答涵盖了您对处理任何类型的行尾的新担忧,因为两者"\r\n"都在解析行之前"\r"转换为 Linux 标准。"\n"
"\r\n"
"\r"
"\n"
为了支持"\r"EOL 字符以及常规的"\n", 和"\r\n"Windows,这就是我要做的:
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
当然,这对于非常大的文件可能不是一个好主意,因为这意味着将整个文件加载到内存中。