保存到文件时格式错误

时间:2018-12-14 19:26:27

标签: c#

我正在尝试将字符串生成器保存到文件中,但是它没有换行。 输出应该看起来像 enter image description here

输出没有换行 enter image description here

class Program
{
    static public void justify(List<string> words, int width)
    {
        //some code to build the arrays
        int ii = 0, jj;
        StringBuilder builder = new StringBuilder();
        do
        {
            jj = result[ii];

            for(int k = ii; k < jj; k++)
            {
                builder.Append(words[k] + " ");
            }

            builder.Append("\n");
            ii = jj;
        }
        while(jj < words.Count);
        Console.WriteLine(builder.ToString());
        StreamWriter file = new StreamWriter("output.txt");
        file.Write(builder.ToString());
        file.Close();
    }

    static void Main(string[] args)
    {
        string file_extention, file1;
        file1 = Console.ReadLine();
        file_extention = "C:\\Users\\sayed\\Desktop\\" + file1 + ".txt";
        string text = System.IO.File.ReadAllText(@file_extention);
        result = text.Split(' ').ToList();
        justify(result, 10);
    }
}

2 个答案:

答案 0 :(得分:5)

那是因为您应该在Windows中将\r\n用于换行。 \n是Unix。您应该使用

builder.AppendLine();

这将自动执行。更准确地说,AppendLine()在非Unix平台上附加一个\r\n,在Unix平台上附加一个字符串\n

请注意,您的文件确实包含\n,有些编辑器甚至在Windows上也将其解释为换行符。例如,记事本没有。

答案 1 :(得分:1)

替换

builder.Append("\n");

使用

builder.Append(Environment.NewLine);

然后使用notepad ++而不是window的默认文本编辑器打开文件。

我相信记事本会忽略您的\ n字符,因此它们不会呈现。在Windows计算机上,它希望\ r \ n呈现换行符和环境。NewLine将确保您找到正确的换行符。