C#实用小知识:字符串里的换行
从前,用asp.net core写了一个给客户发交易明细的应用,每天发一次,因为是csv格式,当时用的是StringBuilder来一行一行组装数据,组装完后,EMali或SFTP给客户。
后来,为节省服务器资源,需要把服务从windows server迁移到Linux上,经过反复测试,都没有发现Bug,就上线了。结果悲剧发生了,用户说我们传的csv格式与以前不一样,我们打开怎么看都是对的,后来,在“心(ri)细(ben)”的同事提示下,我们用sakura文本编辑器打开查看,果不其然,每个换行都不一样,原来在windows下是“\r\n”,在Linux上是“\n”,为什么呢?看代码吧。
WriteLine("---------StringBuilder---------");
var contentBuilder = new StringBuilder();
contentBuilder.AppendLine("line00001");
contentBuilder.AppendLine("line00002");
contentBuilder.AppendLine("line00003");
var content = contentBuilder.ToString();
Console.WriteLine(content);
//为了显示出\r\n进行一个替换
Console.WriteLine(content.Replace("\r", "\\r").Replace("\n", "\\n"));
Console.WriteLine();
Console.WriteLine();
//Environment.NewLin也同样是这个坑
Console.WriteLine("---------Environment.NewLine-------- ");
content = "line0000A" + Environment.NewLine + "line0000B";
Console.WriteLine(content);
Console.WriteLine();
Console.WriteLine(content.Replace("\r", "\\r").Replace("\n", "\\n"));
ReadLine();
这是windows下的输出
这是mac下的输出
这是ubuntu下的输出
这是docker(windows下的WSL)下的输出
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524