我有一个字符串,在某些部分有\ 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;公制好!\ n G90;绝对定位\ n T0;选择新挤出机\ n G28;回家\ n G92 E0;设置挤出机回家\ n M104 S73.0;设定温度\ N“
结果是;
答案 0 :(得分:2)
你的 GcodeTxt
可能有\ n格式化为常规字符串而不是特殊字符。即使您将\ r \ n添加到文本中,它也会被格式化为常规字符串字符。
使用Environment.NewLine
代替\n
来交叉env换行符:
(@"G21;metric is good!" + Environment.NewLine + @" G90 ;...
答案 1 :(得分:2)
修复字符串中的行分隔符以匹配平台所需的内容。 Windows期望\r\n
。使用Environment.NewLine
代替"\n"
。您的字符串以错误的方式生成。修复它的构建方式。
答案 2 :(得分:2)
Windows Notepad仅读取CrLf (回车符+换行符)行结尾,即\r\n
。如果您只放置一个换行符(\n
),那么记事本会将其渲染为就好像它是用一行写的一样。
尝试使用Notepad ++打开文件,它应该按照您的意愿显示。
要撰写回车符+换行符,请改用Environment.NewLine
。
答案 3 :(得分:0)
以上答案是准确的。但是,如果要插入换行符,还应考虑使用StreamWriter.WriteLine
而不是StreamWriter.Write
。
https://msdn.microsoft.com/en-us/library/system.io.streamwriter.writeline(v=vs.110).aspx