ConsoleOutput格式与TextFile格式

时间:2016-10-25 18:29:58

标签: c# visual-studio-2015 format text-files

我有一个我正在生成的字符串构建器,当我在控制台中显示它时,它的格式完美:

enter image description here

但是当我尝试将stringbuilder.ToString()导出到文本文件时,格式化会在翻译中丢失:

enter image description here

foreach (var item in companyList.Keys)
            {
                reportForText.AppendLine(item.ToString());

                foreach (var user in companyList[item])
                {


                        reportForText.Append(String.Format("\n{0,-22}: ", user.Name));
                        foreach (var group in user.GroupList)
                        {
                            reportForText.Append(String.Format("{0}\n", group).PadRight(25 + group.Length));
                        }
                    }
                }
                reportForText.AppendLine();
                reportForText.AppendLine();
            }

1 个答案:

答案 0 :(得分:2)

Notepad.exe不支持\n作为换行符,它仅支持(据我所知)\r\n作为换行符。你可以使用Environment.NewLine而不是\n来换行(甚至直接使用\r\n)来解决这个问题:“对于非Unix平台,包含”\ r \ n“的字符串,或者包含Unix平台“\ n”的字符串“。这些天它不是“Windows或Unix或Mac”的东西,因为你看到它依赖于程序本身以及它定义为代表“新行”的字符,所以IMO这是一个关于Notepad.exe及其工作原理的问题尽管语言支持Environment.NewLine,但如果你在Unix或非Unix上,它应该无关紧要。 Windows Console本身支持\n作为换行符证实了这一点,即使它是一个“非Unix”平台。

您可能遇到的一个无关的问题是使用的字体。默认情况下,Notepad.exe和Console都使用固定宽度字体,因此当前所有间距都会排列。但是如果你换成一个可变宽度的字体,那么你的冒号和东西就会完全排好。