\r,\n,\r\n的區別:回車與換行


\r,\n,\r\n的區別
代碼:

public static void main(String[] args) {
String str1 = "微信公眾號菜鳥名企夢\n干貨多多";
System.out.println(str1);
System.out.println("----------------------------------------");

str1 = "微信公眾號菜鳥名企夢\r干貨多多";
System.out.println(str1);
System.out.println("----------------------------------------");


str1 = "微信公眾號菜鳥名企夢\r\n干貨多多";
System.out.println(str1);
System.out.println("----------------------------------------");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

 

結果(在linux平台的執行結果)


回車、換行的區別
在Windows中:

‘\r’ (回車):即將光標回到當前行的行首(而不會換到下一行),之后的輸出會把之前的輸出覆蓋

‘\n’ 換行,換到當前位置的下一位置,而不會回到行首;

Unix系統里,每行結尾只有“<換行>”,即"\n";

Windows系統里面,每行結尾是“<回車><換行>”,即“\r\n”;

Mac系統里,每行結尾是“<回車>”,即"\r";

也就是:

Linux中遇到換行符("\n")會進行回車+換行的操作,回車符(“\r”)反而只會作為控制字符("^M")顯示,不發生回車的操作。
而windows中要回車符+換行符("\r\n")才會回車+換行,缺少一個控制符或者順序不對都不能正確的另起一行。
一個直接后果是:

Unix/Mac系統下的文件在Windows里打開的話,所有文字會變成一行;
Windows里的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。
例:
在linux中執行下面命令:

$ echo -en '12\n34\r56\n\r78\r\n9' > tmp.txt

 


1
linux中使用vim打開的效果如下圖所示:

 

把該文件下載到windows中,並使用記事本打開:


可以發現在windows中只有“/r/n”才能正確觸發“我們理解的換行”操作

應用
在解析字符串,或其他格式的文件內容的時候,經常需要判定回車換行”的地方,這個時候就要注意:既要判定"\r\n"又要判定"\n"。

寫程序時可能得到一行,將其進行trim掉’\r’,這樣能得到所需要的string了。
————————————————
版權聲明:本文為CSDN博主「古老的屋檐下」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/liewen_/article/details/89673402


免責聲明!

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



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