今天在开发某项目的时候发现String.split竟然没有按照预定的规则进行切分,后来度娘之后才发现.
String[] java.lang.String.split(String regex)
特别注意split后面的参数是regular expression ,那么在切分字符串的时候就需要特别注意,如果你想用来做切分的串中含有regular expression包含的特殊字符,那么可能就会出现问题,直接干货!
public void testDemo4(int appId){
String str = "|3067515|";
String splitExpreesion = "|";
String[] appIdsArray = str.split(splitExpreesion);
for(String temp:appIdsArray){
System.out.println(temp);
}
}
出来的结果:
很神奇吗,本来是想以 | 分割,判断有没有出现中间的那个数字,而现在导致出现的结果却是这样,主要的原因就是 分隔符是regular expression中的特殊字符,需要进行转义。
修改:
public void testDemo4(int appId) {
String str = "|3067515|";
String splitExpreesion = "\\|";
String[] appIdsArray = str.split(splitExpreesion);
for (String temp : appIdsArray) {
if (!temp.equals(splitExpreesion) && temp.equals(appId + "")) {
System.out.println("getBubbleByCondition4MiddleWare 推广型条件不含渠道气泡 bean = ");
} else {
System.out.println("getBubbleByCondition4MiddleWar");
}
}
}
注意splitExpression前面添加了 \ 进行转义,那就要知道regular expression中还包含什么其他字符。
$ ( ) * + . [ ? ^ { |