日期:2014-05-20  浏览次数:20702 次

java为什么使用|截取字符串时需要转义
Java code

StringBuffer sb = new StringBuffer();
sb.append("aaa").append("|").append("bb").append("|");
System.out.println(sb.toString());
String[] strs = sb.toString().split("\\|");
for(int i=0; i<strs.length; i++) {
    System.out.println(strs[i]);


上面这些是书写正确的代码,这里我有个疑问,为什么用|截取时需要转义,而直接加入|字符时却不需要。求高人解答,谢谢~~~

------解决方案--------------------
|这个是正则表达是或的意思,split();就是用正则表达式,不转义能行??
------解决方案--------------------
因为split支持正则表达式,| 是正则表达式的一个特殊符号,所以需要转义,或者把它放在[]里表示一个没有特殊意义的字符
String[] strs = sb.toString().split("\\|"); //转义
String[] strs = sb.toString().split("[|]"); //这样就表示|是普通字符

------解决方案--------------------
另外 append不支持正则表达式,所以不需要转移,append("|")就是追加|字符

------解决方案--------------------
split(String regex) 根据给定正则表达式的匹配拆分此字符串。
append(String str) 将指定的字符串追加到此字符序列。已经很明显了
这个是api文档说的
------解决方案--------------------
探讨
split(String regex) 根据给定正则表达式的匹配拆分此字符串。
append(String str) 将指定的字符串追加到此字符序列。已经很明显了
这个是api文档说的

------解决方案--------------------
append("|")加入的是字符串系列或者字符'|',
split("\\|")
是方法
String[] java.lang.String.split(String regx);
regx是正则表达式 |是正则表达的式的保留符号,相等于关键字,所以用 \| 转义,然而在双引号下\\才表示一个\,所以是 split("\\|")
还支持split("[\\|]")