在平常的編碼中,可能會經常用到String的split方法,用來將字符串分割成數個對象進行處理。但是往往會碰到分割結果不正確的時候,到底是什麼原因呢,進入java的API進行徹底的分析理解吧。
pulic String[] split(String regex, int limit){
return Pattern.compile(regex).split(this,limit);
}
看到這裏你應該就能大概明白其中的原委了,我們不去深究Pattern的split方法是如何實現分割的,我們只要看到實際上我們傳入的分隔符其實是被看待成一個正則表達式去解析的,因此String的split這個方法其實支持的是正則表達式的分割,而不簡簡單單的僅支持一個字符串的分割符。因此,如果你傳入了一個字符串作爲分割符,而恰巧這個字符串含有正則表達式的關鍵字,那麼恭喜了,你可能會得到一個被分割的支離破碎的數組或者一個血淋淋的ERROR。
所以,在非要以特殊字符進行分割的情況下,想要得到正確的結果,我們要對這些關鍵字進行反斜槓轉義或者用[]來包圍起來。
例如我們要對字符串 “12345*6789*9876*54321” 進行*符號的分割,那麼傳入的分割符應該是[*]或者\\*。
常見的關鍵字比如 * , | ,? , + , . , ^ , $ , 還有一些括號吧