如何使用C#中的streamwriter编写已经具有新行字符的字符串?

如何使用C#中的streamwriter编写已经具有新行字符的字符串?,c#,streamwriter,C#,Streamwriter,我有一个字符串,在某些部分有\n个字符。我想把那个字符串写入文本文件。我尝试streamwriter的Write和WriteLine方法,两种方法都在一行中写入。那么,是否有任何简单的方法可以使用新行字符写入此字符串,或者是否应该按字符将其拆分为数组 Microsoft.Win32.SaveFileDialog sfd = new Microsoft.Win32.SaveFileDialog(); sfd.Filter = "g-code|*.gcode;"; i

我有一个字符串,在某些部分有\n个字符。我想把那个字符串写入文本文件。我尝试streamwriter的Write和WriteLine方法,两种方法都在一行中写入。那么,是否有任何简单的方法可以使用新行字符写入此字符串,或者是否应该按字符将其拆分为数组

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”

结果是,

您的
GcodeTxt
可能已将\n格式化为常规字符串而不是特殊字符。即使向文本中添加\r\n,它也将被格式化为常规字符串字符

对于跨环境换行符,请使用
Environment.NewLine
而不是
\n

(@“G21;度量值很好!”+Environment.NewLine+@“G90;…
修复字符串中的行分隔符,使其与平台期望的一致。Windows期望
\r\n
。使用
环境。NewLine
而不是
“\n“。您的字符串是以错误的方式生成的。修复它正在被构建的方式。

< P>以上的答案是准确的。但是,您也应该考虑使用<代码>流写器.WrreDetry而不是<代码>流写器。在插入新行时编写< <代码> > < /P>

Windows记事本只读取CrLf(回车+换行)的行尾,即
\r\n
。如果只输入换行字符(
\n
),则记事本会将其呈现为一行

试着用记事本++之类的东西打开你的文件,它看起来应该和你想要的一样


要编写回车符+换行符,请使用
环境。换行符

GcodeTxt是大量数据还是少量数据?请注意,Windows记事本只读取
\r\n
行尾,而不仅仅是
\n
。请尝试用类似于记事本++的方式打开文件,看看它是否应该这样做。我不是用Notepad++打开它epad++,这正是我所期望的。因此,要在windows记事本中实现这一点,我应该包括\r\n附近的每个地方吗?是的。最简单的方法是使用
环境。换行符
,它将在windows平台上返回
\r\n
。这取决于他是以块的形式获得不同的行,还是以长字符串的形式获得不同的行