在編程過程中,需要將一個字符串中的反斜杠(\)全部替換成(\\),很簡單的操作但是很容易報錯。
? ? ? ?比如:String filePath ?= ?"D:\daxiang\test\daxiang.jpg" ;
? ? ? ?開始時,調(diào)用 replaceAll()方法以為就能替換的代碼如下:
? ? ? ?filePath ?= ?filePath.replaceAll("\","\\");
? ? ? ?但程序會報正則表達式的錯誤。??????????????????????
經(jīng)過網(wǎng)上查找一些例子,將錯誤原因和解決方法總結如下:
? ? ? ?在不同的系統(tǒng)中,路徑的分隔符不同,故需要做出判斷,并切換分隔符
(1)Java把字符串中的反斜杠(\)替換成(\\)
? ? ? ?Java中的replaceAll()方法要用4個反斜杠,表示一個反斜杠
replaceAll()方法實際是采用正則表達式的規(guī)則去匹配的。在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("/","\\\\") ;