如何在 C# 中使用 streamwriter 编写已经具有换行符的字符串?
How to write strings which is already have new line character using streamwriter in C#?
我有一个字符串,在某些部分有 \n 字符。我想将该字符串写入文本文件。我尝试了 streamwriter 的 Write 和 WriteLine 方法,并且在这两种方法中它都写在一行中。那么,有没有什么简单的方法可以使用换行符来编写这个字符串,或者应该用 \n 字符将它拆分成数组。
Microsoft.Win32.SaveFileDialog sfd = new Microsoft.Win32.SaveFileDialog();
sfd.Filter = "g-code|*.gcode;";
if (sfd.ShowDialog() == true)
{
string path = System.IO.Path.GetFullPath(sfd.FileName);
System.IO.StreamWriter writer = new System.IO.StreamWriter(sfd.OpenFile());
writer.Write(GcodeTxt);
writer.Dispose();
writer.Close();
MessageBox.Show("File is saved.", "Saved", MessageBoxButton.OK, MessageBoxImage.Information);
}
示例 GcodeTxt:"G21;metric is good!\n G90 ;absolute positioning\n T0 ;select new extruder\n G28 ;go home\n G92 E0 ;set extruder home\n M104 S73.0 ;set temperature\n"
结果是;
您的 GcodeTxt
可能将 \n 格式化为常规字符串而不是特殊字符。即使您将 \r\n 添加到文本中,它也只会被格式化为常规字符串字符。
使用 Environment.NewLine
而不是 \n
进行跨环境换行:
(@"G21;metric is good!" + Environment.NewLine + @" G90 ;...
修复字符串中的行分隔符以匹配平台的预期。 Windows 预计 \r\n
。使用 Environment.NewLine
而不是 "\n"
。您的字符串生成方式有误。修复它的构建方式。
以上答案准确无误。但是,当您要插入换行符时,您还应该考虑使用 StreamWriter.WriteLine
而不是 StreamWriter.Write
。
https://msdn.microsoft.com/en-us/library/system.io.streamwriter.writeline(v=vs.110).aspx
Windows 记事本只读取 CrLf (Carriage return + Line feed) 行结尾,即 \r\n
。如果您只输入一个换行符 (\n
),那么记事本会将其呈现为就好像它是在一行中写的一样。
尝试在 Notepad++ 之类的软件中打开文件,它应该看起来像您想要的那样。
要编写回车符 return + 换行符,请改用 Environment.NewLine
。
我有一个字符串,在某些部分有 \n 字符。我想将该字符串写入文本文件。我尝试了 streamwriter 的 Write 和 WriteLine 方法,并且在这两种方法中它都写在一行中。那么,有没有什么简单的方法可以使用换行符来编写这个字符串,或者应该用 \n 字符将它拆分成数组。
Microsoft.Win32.SaveFileDialog sfd = new Microsoft.Win32.SaveFileDialog();
sfd.Filter = "g-code|*.gcode;";
if (sfd.ShowDialog() == true)
{
string path = System.IO.Path.GetFullPath(sfd.FileName);
System.IO.StreamWriter writer = new System.IO.StreamWriter(sfd.OpenFile());
writer.Write(GcodeTxt);
writer.Dispose();
writer.Close();
MessageBox.Show("File is saved.", "Saved", MessageBoxButton.OK, MessageBoxImage.Information);
}
示例 GcodeTxt:"G21;metric is good!\n G90 ;absolute positioning\n T0 ;select new extruder\n G28 ;go home\n G92 E0 ;set extruder home\n M104 S73.0 ;set temperature\n"
结果是;
您的 GcodeTxt
可能将 \n 格式化为常规字符串而不是特殊字符。即使您将 \r\n 添加到文本中,它也只会被格式化为常规字符串字符。
使用 Environment.NewLine
而不是 \n
进行跨环境换行:
(@"G21;metric is good!" + Environment.NewLine + @" G90 ;...
修复字符串中的行分隔符以匹配平台的预期。 Windows 预计 \r\n
。使用 Environment.NewLine
而不是 "\n"
。您的字符串生成方式有误。修复它的构建方式。
以上答案准确无误。但是,当您要插入换行符时,您还应该考虑使用 StreamWriter.WriteLine
而不是 StreamWriter.Write
。
https://msdn.microsoft.com/en-us/library/system.io.streamwriter.writeline(v=vs.110).aspx
Windows 记事本只读取 CrLf (Carriage return + Line feed) 行结尾,即 \r\n
。如果您只输入一个换行符 (\n
),那么记事本会将其呈现为就好像它是在一行中写的一样。
尝试在 Notepad++ 之类的软件中打开文件,它应该看起来像您想要的那样。
要编写回车符 return + 换行符,请改用 Environment.NewLine
。