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

解决方案 »

  1.   

    |这个是正则表达是或的意思,split();就是用正则表达式,不转义能行??
      

  2.   

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

  3.   

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

  4.   

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

  5.   

    +
    正则中|是或的意思,而split的参数是正则表达式,所以|需要转移。仔细看看api手册就能避免这些问题
      

  6.   

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