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

时间:2016-06-08 18:22:42

标签: c# streamwriter

我有一个字符串,在某些部分有\ 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“

结果是;

enter image description here

4 个答案:

答案 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