Apache-common StringUtils工具類 字符分割方法split

最近開發微信小程序,openId的處理涉及一個自定義後綴的分割,所以想當然的使用了apache-common的StringUtils工具類的split方法:

org.apache.commons.lang3.StringUtils.split

示例代碼:

String s1 = "owuVV4_BSs4oKz2srrw-4ceLgonCE#_#null";
String[] arr = org.apache.commons.lang3.StringUtils.split(s1, "#_#");

由於自定義的分隔符是“#_#”,所以這個時候奇蹟出現了。
分割後的結果,包含三個元素:

Apache-common StringUtils工具類 字符分割方法split

我的第一反應,是正則惹的禍,但是查看下正則表達式的關鍵字,並沒有#。
用String類自帶的split試一下:
String[] arr2 = s1.split("#_#");
結果是對的:

Apache-common StringUtils工具類 字符分割方法split

String自帶的split就是根據正則表達式進行分割的,所以驗證了不是正則導致的。查看下StringUtils.split源碼,發現其實現邏輯是將分隔符的每個字符,然後多次分割。

後來找了另一個方法,把“#_#”作爲一個整體分隔符進行分割:splitByWholeSeparator

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章