java 處理字串是的轉義字元的處理
package test; import java.net.URL; import org.junit.Before; import org.junit.Test; public class EscapeCharacterTest { @Before public void setUp() throws Exception { } @Test public void testEscapeCharacter(){ URL url=Thread.currentThread().getContextClassLoader().getResource(""); String path=url.toString(); String path2=System.getProperty("user.dir"); System.out.println("path: "+path); System.out.println("path2: "+path2); } }
這是獲取當前簡單java工程的classpath的兩種方法,控制檯輸出如下:
path: file:/E:/LuJunXian/aotospace/ReadOffice/bin/
path2: E:\LuJunXian\aotospace\ReadOffice
可見:path使用的分隔符是斜槓:“/” ; 而path2使用的是反斜槓: "\" ;
在java語言中,“\”所代表的是轉義字元,並不代表反斜槓本身,所以在java程式碼中想要表示反斜槓本身“\”,則需要表示為“\\”,前一個反斜槓表示轉義後一個反斜槓為反斜槓本身,也就是說,如果需要在控制檯通過System.Out.println()打印出一個反斜槓的話,程式碼需要這樣寫System.out.println("\\");再稍微的延伸一下,如果需要在控制檯列印單引號或者雙引號的話,程式碼是System.out.println("\"");如果不加轉義字元“\”就會出現配對的錯誤。
在String類的方法裡面,split和replace或者replaceAll會經常被用到,比如,若需要將path2的檔案分隔符轉換為path的型別,則需要將程式碼寫成 path2.replaceAll("\\\\", "/");
為什麼需要這樣寫呢?原因就是第一個引數是正則表示式,在正則表示式中,“\”也是轉義字元,可以簡單的理解為,第一個引數需要經過兩次轉義才能將其轉化為一個普通的字串,所以就是前兩個反斜槓"\\"經過正則表示式的轉換後變成"\",同理,第三個和第四個經過正則表示式轉換後也變成"\",所以經過第一次轉換後的第一個引數變成“\\”,第二次轉義後就變成了普通的字元"\"而不是轉義字元,
同樣的道理:若有一段字串:“ab||cd||1234||8569”,這串字元被“||”分隔,若是需要用split解析的話,應該寫成String []strs=str.split("\\|\\|");
下表列舉了其他的一些常用轉義字元。
轉義字元