我有一个字符串,我将其写入响应的输出流。在保存此文档并在Notepad++或WordPad中打开它后,我会得到漂亮的格式化换行符,并且它们所在的位置是正确的。但是,当我使用常规的Windows记事本打开此文档时,我会得到一个长文本串,其中应该有换行符的地方会显示为□(类似于方块的符号)。
有没有人有过这样的经历?
是的 - 这意味着您正在使用 \n
作为换行符,而不是 \r\n
。Notepad 只能理解后者。
(请注意,其他人建议使用 Environment.NewLine
如果您想要平台默认值 - 但是如果您正在从 Mono 提供服务并且绝对需要 \r\n
,则应明确指定它。)
试试这个:
string myStr = ...
myStr = myStr.Replace("\n", Environment.NewLine)
Regex.Replace(@"\n|\r\n?", "\r\n")
。 - Alan Moore同时:
string s = $"first line{Environment.NewLine}second line";
public async Task AjudaAsync(IDialogContext context, LuisResult result){
await context.PostAsync("How can I help you? \n\n 1.To Schedule \n\n 2.Consult");
context.Wait(MessageReceived);
}
如前所述,最好使用Environment.NewLine
。
\n
代表换行符,在类Unix系统(如Linux和macOS)和许多编程语言中常用于换行。
Environment.NewLine
是一个特定于平台的字符串,表示当前操作系统的换行序列。它会自动适应代码运行平台上使用的换行约定。在Windows上,Environment.NewLine
等同于\r\n
,而在类Unix系统上,则等同于\n
。