0

我有我想阅读的文本文件“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。

4

1 回答 1

1

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

关于您评论中 Notepad++ 的 CRLF 配置,您可以进入菜单 Settings -> Preferences -> New document/Default Directory -> New Document -> Format -> Windows。(这是版本 5.8.6 上的路径)。

于 2013-05-29T11:37:20.487 回答