Java學習筆記2:使用replaceAll()方法替換字串中的反斜槓:左斜槓(\)和右斜槓(/)
在程式設計過程中,需要將一個字串中的反斜槓(\)全部替換成(\\),很簡單的操作但是很容易報錯。
比如:String filePath = "D:\daxiang\test\daxiang.jpg" ;
開始時,呼叫 replaceAll()方法以為就能替換的程式碼如下:
filePath = filePath.replaceAll("\","\\");
但程式會報正則表示式的錯誤。
經過網上查詢一些例子,將錯誤原因和解決方法總結如下:
在不同的系統中,路徑的分隔符不同,故需要做出判斷,並切換分隔符
(1)Java把字串中的反斜槓(\)替換成(\\)
Java中的replaceAll()方法要用4個反斜槓,表示一個反斜槓
replaceAll()方法實際是採用正則表示式的規則去匹配的。在regex中"\\"表示一個"\",在java中一個"\"也要用"\\"表示。這樣,前一個"\\"代表regex中的"\",後一個"\\"代表java中的"\",所以字串轉義一次,正則轉義一次,那麼一個斜扛要寫4個,要想使用replaceAll()方法將字串中的反斜槓(\)替換成(\\),則需要這樣寫:replaceAll("\\\\","\\\\\\\\")
例:
str1="aa\bbb"; str2="aa'bbb" ;
要想替換成
str1="aa\\bbb";str2="aa\'bbb" ;
必須這樣替換:
str1 = str1.replaceAll("\\\\","\\\\\\\\") ;
str2 =str2.replaceAll("'", "\\\\'") ;
(2)Java把字串中的反斜槓(/)替換成(\)
replaceAll("/","\\\\") ;