java中去除字符串(String)中的換行字符(\r \n \t)


例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 

若有侵權,請聯系本人刪除


免責聲明!

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



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