[英]ConsoleOutput formatting vs TextFile formatting
我有一个正在生成的字符串生成器,当我在控制台中显示它时,它的格式是完美的:
但是当我尝试将stringbuilder.ToString()导出到文本文件时,格式在翻译中丢失:
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();
}
Notepad.exe不支持\\n
作为换行符,它仅支持(据我所知) \\r\\n
作为换行符。 您可以通过使用Environment.NewLine
而不是\\n
来换行(甚至直接使用\\r\\n
)来解决此问题:“对于非Unix平台,包含” \\ r \\ n“的字符串,或包含” \\ n“用于Unix平台”。 如今,它已不是“ Windows,Unix或Mac”,因为如您所见,它取决于程序本身以及它定义的代表“换行符”的字符,因此IMO这是有关Notepad.exe及其工作方式的问题而且,即使您使用的是Unix还是非Unix,这也都无关紧要,尽管该语言支持Environment.NewLine
。 Windows Console
本身支持\\n
作为换行符,即使它是“非Unix”平台也证实了这一点。
您可能遇到的一个不相关的问题是所使用的字体。 默认情况下,Notepad.exe和Console都使用固定宽度的字体,因此当前所有间距都对齐。 但是,如果更改为可变宽度的字体,则冒号和其他内容将无法完全对齐。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.