java轉義字符探究恢復


今天工作的時候,遇到了個奇怪的問題,是關於字符串轉義與替換的。最后終於解決了,特總結
下。

小demo,

package com.westward;

public class Demo {

    
    /**
     * 1.將字符串  "a    b"替換為"a 1b".ab之間不是空格,是制表符。
     * 2.將字符串  "a\tb"替換為"a 2b".
     * */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String string1= "a\tb";
        System.out.println("string1 ="+ string1);
        String string2= "a\\tb";
        System.out.println("string2 ="+ string2);
        System.out.println("---------轉換開始-----------");
        string1= string1.replaceAll("\\t", " 1");
        string2= string2.replaceAll("\\\\t", " 2");
        System.out.println("format:string1 ="+ string1);
        System.out.println("format:string2 ="+ string2);
        
    }

}

output:
string1 =a b
string2 =a\tb
---------轉換開始-----------
format:string1 =a 1b
format:string2 =a 2b

總結:

java語言,字符串中的反斜杠\是轉義字符的意思,而不是反斜杠本身。所以我們如果想打印出反斜杠本身,必須\\。前面一個是轉義字符,將后面的轉義字符轉義為反斜杠本身,有點繞。

特別需要注意的是,我們在控制台打印出比如字符串:xyz\txxx,那么我們必須敏感的認識到,代碼中的字符串肯定不是打印出來的原樣,而應該是 xyz\\txxx。同樣的,如果控制台打印出的字符串是:xyz  xxx,(中間是制表符),那么代碼中的字符串應該是:xyz\txxx或者xyz  xxx。

注意看上面的demo,當我們需要將字符串中的某部分替換成另一部分時,用到了String的replaceAll()這個方法,這個方法的第一個參數是正則表達式。這里我們需要注意:

java中,\是轉義字符,在正則表達式(正則表達式本身也相當於一門語言,不僅僅java有,其他語言也有)中,\也是轉義字符。正則表達式中\t表示制表符,那么在java中表示此正則表達式制表符,就必須這樣來表示:\\t.  如果我們需要表示正則中的\t本身(而不是制表符)呢?我們需要這樣來表示:\\\\t.其實,它翻譯成正則,就是\\t,第一個反斜杠轉義第二個,第三個反斜杠轉義第四個,正則中,\\t第一個反斜杠將第二個反斜杠轉義為反斜杠本身,原理和java語言一樣。 

 


免責聲明!

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



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