在使用Stringsplit方法分隔字符串时分隔符如果用到一些特殊字符可能会得不到我们预期的结果
我们经常使用public String[] split(String regex)方法来拆分一个有分隔符的字符串但是由于参数regex是一个 regularexpression的匹配模式而不是一个简单的String所以他对一些特殊的字符可能会出现你预想不到的结果比如测试下面的代码用竖线 | 分隔字符串你将得不到预期的结果
view plaincopy to clipboardprint?
String[] aa = aaa|bbb|cccsplit(|); //得不到预期的结果
//String[] aa = aaa|bbb|cccsplit(\\|); 这样才能得到正确的结果
for (int i = ; i <aalength ; i++ ) {
Systemoutprintln(+aa[i]);
}
//用竖 * 分隔字符串运行将抛出异常用加号 + 也是如此
String[] aa = aaa*bbb*cccsplit(*);
//String[] aa = aaa|bbb|cccsplit(\\*); 这样才能得到正确的结果
for (int i = ; i <aalength ; i++ ) {
Systemoutprintln(+aa[i]);
}
显然+ * 不是有效的模式匹配规则表达式用\\* \\+转义后即可得到正确的结果
| 分隔串时虽然能够执行但是却不是预期的目的\\|转义后即可得到正确的结果
还有如果想在串中使用\字符则也需要转义首先要表达aaaa\bbbb这个串就应该用aaaa\\bbbb如果要分隔就应该这样才能得到正确结果
String[] aa = aaa\\bbb\\bcccsplit(\\\\);