我有一个我正在生成的字符串构建器,当我在控制台中显示它时,它的格式完美:
但是当我尝试将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();
}
答案 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都使用固定宽度字体,因此当前所有间距都会排列。但是如果你换成一个可变宽度的字体,那么你的冒号和东西就会完全排好。