1. 程式人生 > >JAVA String.replaceAll用法

JAVA String.replaceAll用法

正則表示式,關於String.replaceALL(..)
class t1 {
public static void main(String a[]) {
String s = 'E:\\jbx\\x9\\io9';
String ss;
//把路徑s中的'\'換為'\\',為何還要整8個'\'?我以為4個就行了。
ss = s.replaceAll('\\\\', '\\\\\\\\')
System.out.println('s= ' + s);
System.out.println('ss=' + ss);
//output:
//s= E:\jbx\x9\io9
//ss=E:\\jbx\\x9\\io9
}
}

這裡的關鍵是String.replaceAll()是用regular expression 來作為引數的。但是java本身的字串對於轉義符\也有類似的處理。首先,java會把“\\\\”解釋成一個字串(其中包含兩個char)——“\ \”這個就是你在JDK的文件裡看到的。
接下來,由於replaceAll是以正則表示式作為引數,所以“\\”被解釋成一個regex。對於一個regex來說這就代表著一個字元,就是“\”。對後面的那個8個\來說,最終會被解釋成“\\”。

換言之,假設String.replaceAll()是以普通字串,而不是regex作為引數,那麼這樣寫程式碼: String target = source.replaceAll('\\', '\\\\'); 就可以了。