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)下的輸出

 

 

 

  想要更快更方便的了解相關知識,可以關注微信公眾號 
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM