两个看起来相同的文本文件的结果不同

时间:2013-05-28 23:52:15

标签: ruby text file-io

我想要阅读这个文本文件“test.txt”。它有几行:

line1
line2
trim(1255, 158597)
#712, 272, 4, 102

我使用以下代码:

itrimcmd = ""
secondline = ""    
File.open("test.txt").each_line { |line|
  puts "[8]...  #{line}"
  if line =~ /^trim/ then itrimcmd = line end
  if line =~ /^#/  then secondline = line end
}
puts "itrimcmd:  #{itrimcmd}"
puts "secondline:  #{secondline}"

我的代码不适用于此文件。输出:

#712, 272, 4, 102)
itrimcmd:
secondline:

如果我重新输入具有完全相同内容的第二个文件,这一次,我得到了正确的结果:

line1
line2
trim(1255, 158597)
#712, 272, 4, 102

我认为这两个文本文件没有任何区别。正确的输出:

[2]...  line1
[2]...  line2
[2]...  trim(1255, 158597)
[2]...  #712, 272, 4, 102
itrimcmd:  trim(1255, 158597)
secondline:  #712, 272, 4, 102

我在Windows 7上使用Ruby 1.9.3。

1 个答案:

答案 0 :(得分:2)

我现在唯一能想到的是文件test.txt的两个版本可能有不同的换行符。有三种类型的换行符:\n(linux),\r\n(windows)和\r(mac)。尝试以二进制模式和/或文本模式打开文件,也许您可​​以获得预期的结果。

关于评论的Notepad ++的CRLF配置,您可以进入菜单设置 - >偏好 - >新文档/默认目录 - >新文件 - >格式 - >视窗。 (这是版本5.8.6的路径)。

相关问题