Ruby 当字符串保存到文件中时,\r\n为什么要转换为\n?
该字符串作为返回值来自:Ruby 当字符串保存到文件中时,\r\n为什么要转换为\n?,ruby,regex,newline,Ruby,Regex,Newline,该字符串作为返回值来自: > msg = imap.uid_fetch(uid, ["RFC822"])[0].attr["RFC822"] 在控制台中,如果键入msg,将显示一个长字符串,其中包含双引号,\r\n分隔每行: > msg "Delivered-To: email@test.com\r\nReceived: by xx.xx.xx.xx with SMTP id;\r\n" 如果我将它的一部分与正则表达式匹配,则返回值有\r\n: > msg[/Deliver
> msg = imap.uid_fetch(uid, ["RFC822"])[0].attr["RFC822"]
在控制台中,如果键入msg,将显示一个长字符串,其中包含双引号,\r\n分隔每行:
> msg
"Delivered-To: email@test.com\r\nReceived: by xx.xx.xx.xx with SMTP id;\r\n"
如果我将它的一部分与正则表达式匹配,则返回值有\r\n:
> msg[/Delivered-To:.*?\s+Received:/i]
=> "Delivered-To: email@test.com\r\nReceived:"
如果将字符串保存到文件中,将其读回并与相同的正则表达式匹配,则得到\n而不是\r\n:
> File.write('test.txt', msg)
> str = File.read('test.txt')
> str[/Delivered-To:.*?\s+Received:/i]
=> "Delivered-To: email@test.com\nReceived:"
将字符串保存到文件时,\r\n是否转换为\n?
是否有办法将字符串保存到文件中,在不修改行尾的情况下将其读回?这将在以下章节中介绍:
以下模式必须单独使用,并与上述一种或多种模式一起使用
更好的做法是使用foreach
读取文件,这样就不需要关心行尾;您将分别获得每一行。另一种方法是使用读线
,但它在大文件上使用
另外,如果您正在处理邮件文件,我强烈建议您使用编写的东西,而不是自己编写。gem就是这样一个预先构建并经过良好测试的软件包。这可能是由于操作系统的原因吗?见此:
"b" Binary file mode
Suppresses EOL <-> CRLF conversion on Windows. And
sets external encoding to ASCII-8BIT unless explicitly
specified.
"t" Text file mode
str = File.read('test.txt')