例1:
public class Test { public static void main(String[] args) { String s = "'sds gdasda" + "\n" + "edaeafd'"; System.out.println("轉換前:"+s); s = s.replaceAll("\r|\n", ""); System.out.println("轉換后:"+s); } }
輸出結果:
轉換前:'sds gdasda
edaeafd'
轉換后:'sds gdasdaedaeafd'
例2:
public class Test2 { public static void main(String[] args) { System.out.println("\\r 輸出:"+"abc"+"\r"+"abc"); System.out.println("\\n輸出:"+"abc"+"\n"+"abc"); } }
輸出結果:
\r 輸出:abc
abc
\n輸出:abc
abc
那么\r與\n是不是相等的呢?
例3:
public class Test3 { public static void main(String[] args) { String s = "'sds gdasda" + "\n" + "edaeafd'"; System.out.println("轉換前:"+s); s = s.replaceAll("\r", ""); System.out.println("轉換后:"+s); } }
輸出結果:
轉換前:'sds gdasda
edaeafd'
轉換后:'sds gdasda
edaeafd'
經過s.replaceAll("\r", ""),\n並沒有被替換成空,說明\n和\r是不相等的
例4:
public class Test4 { public static void main(String[] args) { String s = "'sds gdasda" + "\n\r" + "edaeafd'"; System.out.println("轉換前:"+s); s = s.replaceAll("\r|\n", ""); System.out.println("轉換后:"+s); } }
輸出結果:
轉換前:'sds gdasda
edaeafd'
轉換后:'sds gdasdaedaeafd'
可以看出\r表示回車,\n表示另起一行(\r 叫回車 Carriage Return ;\n 叫新行 New Line)
我們可以再做一個實驗:
例5:
public class Test5 { public static void main(String[] args) { String s = "'sds gdasda" + "\r\n" + "edaeafd'"; System.out.println("轉換前:"+s); s = s.replaceAll("\r|\n", ""); System.out.println("轉換后:"+s); } }
輸出結果:
轉換前:'sds gdasda
edaeafd'
轉換后:'sds gdasdaedaeafd'
在例4到例5中我們只是把字符串s的\n\r的位置改變成了\r\n,卻發現例4輸出結果中多了一行空格。
至於為什么例4和例5輸出會有這樣的區別也就是\r\n與\n\r的區別,這是網上的一個比較好的答案:
不同平台的回車+換行
windows: \r\n
mac: \r
unix/linux: \n
在"abc"+"\n\rdef"中,\n\r不匹配任何平台,因此它被認為是\n和\r(匹配unix/linux和mac),即進行了"換行+回車"操作,所以有兩個新行。
在"abc"+"\r\ndef"中,\r\n匹配Windows平台,因此它被認為只是一個新的行。
本文轉載自https://blog.csdn.net/y13530828499/article/details/6718206
若有侵權,請聯系本人刪除