我有有"\n"中有一个简单的字符串.它应该写入文件.例如:
var s = new StringBuilder();
s.Append("hello");
s.Append("\n");
s.Append("betty");
s.Append("is");
s.Append("my");
s.Append("\n");
s.Append("name");
string str = s.ToString();
Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)
此字符串按预期打印:
hello bettyismy name
现在,当我尝试使用下面写这个字符串的文件:
var w = new StreamWriter(crcFilePath);
w.WriteLine(crcString);
w.Close();
Run Code Online (Sandbox Code Playgroud)
该文件的内容是:
hellobettyismyname
任何想法,为什么它忽略了字符串中的\n.
这可能是应用程序或系统使用的是查看你的文件忽略了换行,不C#忽略它.取而代之的\n,请尝试使用System.Environment.NewLine或\ r \n.见这个问题上\ r和\ N信息.此外,记事本++可以显示白色字符空间包括新的线,可在这样的情况下很方便.
该文件的内容是:
helloashnaismyname
Run Code Online (Sandbox Code Playgroud)
实际上这个文件的内容是这样的(以十六进制模式):
==========================================================================
xDump Version 1.04 - Hex Dump Utility
Copyright (c) Xidicone Pty Ltd 20013 - All rights reserved.
==========================================================================
0000: 68 65 6C 6C 6F 0A 62 65 74 74 79 69 73 6D 79 0A | hello.bettyismy.
0010: 6E 61 6D 65 0D 0A | name..
==========================================================================
Run Code Online (Sandbox Code Playgroud)
任何想法,为什么它忽略了字符串中的\n.
如通过十六进制转储中可以看出,它没有忽略\n个字符.
问题是,我怀疑你打开记事本文件,并没有行已了解标记的结束,因此它显示是错误的.
更改代码是这一点,并如预期记事本加载文件:
var s = new StringBuilder();
s.Append("hello");
s.Append("\r\n");
s.Append("betty");
s.Append("is");
s.Append("my");
s.Append("\r\n");
s.Append("name");
string str = s.ToString();
Run Code Online (Sandbox Code Playgroud)