日期:2014-05-19  浏览次数:20783 次

JAVA中 split 使用的疑惑
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("\\(");

因为中文括号显然在正则表达式中没有任何特殊含义,所以当作普通字符处理了。