1. 程式人生 > >java中去除字串(String)中的換行字元(\r \n \t)

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 

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