最近开发微信小程序,openId的处理涉及一个自定义后缀的分割,因此想固然的使用了apache-common的StringUtils工具类的split方法:正则表达式
org.apache.commons.lang3.StringUtils.split
apache
示例代码:小程序
String s1 = "owuVV4_BSs4oKz2srrw-4ceLgonCE#_#null"; String[] arr = org.apache.commons.lang3.StringUtils.split(s1, "#_#");
因为自定义的分隔符是“#_#”,因此这个时候奇迹出现了。
分割后的结果,包含三个元素:微信小程序
个人第一反应,是正则惹的祸,可是查看下正则表达式的关键字,并无#。
用String类自带的split试一下:String[] arr2 = s1.split("#_#");
结果是对的:微信
String自带的split就是根据正则表达式进行分割的,因此验证了不是正则致使的。查看下StringUtils.split源码,发现其实现逻辑是将分隔符的每一个字符,而后屡次分割。ide
后来找了另外一个方法,把“#_#”做为一个总体分隔符进行分割:splitByWholeSeparator工具