最近開發(fā)微信小程序,openId的處理涉及一個(gè)自定義后綴的分割,所以想當(dāng)然的使用了apache-common的StringUtils工具類的split方法:
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的囊謙網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
org.apache.commons.lang3.StringUtils.split
示例代碼:
String s1 = "owuVV4_BSs4oKz2srrw-4ceLgonCE#_#null";
String[] arr = org.apache.commons.lang3.StringUtils.split(s1, "#_#");
由于自定義的分隔符是“#_#”,所以這個(gè)時(shí)候奇跡出現(xiàn)了。
分割后的結(jié)果,包含三個(gè)元素:
我的第一反應(yīng),是正則惹的禍,但是查看下正則表達(dá)式的關(guān)鍵字,并沒有#。
用String類自帶的split試一下:String[] arr2 = s1.split("#_#");
結(jié)果是對(duì)的:
String自帶的split就是根據(jù)正則表達(dá)式進(jìn)行分割的,所以驗(yàn)證了不是正則導(dǎo)致的。查看下StringUtils.split源碼,發(fā)現(xiàn)其實(shí)現(xiàn)邏輯是將分隔符的每個(gè)字符,然后多次分割。
后來找了另一個(gè)方法,把“#_#”作為一個(gè)整體分隔符進(jìn)行分割:splitByWholeSeparator