最近編個小程序,要涉及到讀取用戶輸入的文件路徑,并根據其保存到相應的目錄。
由于用戶輸入的是一般的字符表達式,比如“D:\document\myprogram\first.java”.需要將'\'換成'\\'才行。剛開始以為replaceAll("\\", "\\\\”)就可以了。而后來發現需寫成replaceAll("
\\\\", "
\\\\\\\\”)才行。自己又編了個程序測試一下:
String s = "D:\\documents\\first.java"
String ss = ss = s.replaceAll("
\\\\", "
\\\\\\\\”);
System.out.println("s= " + s);
System.out.println("ss=" + ss);
結果輸出:
s= D:\documents\first.java
ss= D:\\documents\\first.java
后來仔細想想才明白,首先,java會把“\\\\”解釋成一個字符串,接下來,由于replaceAll是以正則表達式作為參數,所以“\\”被解釋成一個regex。對于一個regex來說這就代表著一個字符,就是“\”。對后面的那個8個\來說,最終會被解釋成“\\”。