java中关于 split 对中英文括号的解析不一样,请看下面代码。
[code=Java]
//括号是英文括号
String str_1= "4号楼(地震局家属楼) ";
String str_2= "经三路10号院4号楼(地震局家属楼)东1单元1层1室 ";
//括号是中文括号
String str_3= "4号楼(地震局家属楼) ";
String str_4= "经三路10号院4号楼(地震局家属楼)东1单元1层1室 ";
String new_str_1= " ";
String new_str_2= " ";
new_str_1=str_2.split(str_1)[0];
new_str_2=str_4.split(str_3)[0];
System.out.println( "new_str_1= "+new_str_1);
System.out.println( "new_str_2= "+new_str_2);
[/code]
上面代码输出的结果不一样,split 对括号的解析,英文的括号和中文的括号,不一样。这个是什么情况?有谁知道?
------解决方案--------------------
split函数的参数是正则表达式,而()在正则表达式中有特殊语义,所以如果只是用(本身,要转义,类似:
split("\\(");
因为中文括号显然在正则表达式中没有任何特殊含义,所以当作普通字符处理了。