代码如下: String splitString="a|b|c";
String [] sparray = splitString.split("|");
System.out.println(sparray.length);
for(int i=0;i<sparray.length;i++)
{
System.out.println(sparray[i]);
}结果;
6a
|
b
|
c
这个是为什么? "|" 是转义字符吗?

解决方案 »

  1.   

    String[] sparray = splitString.split("\\|");
      

  2.   

    这是一个比较典型的问题,同样的问题出在要分离ip地址的时候split(".")的结果也会出人意料。这是因为楼主没有看仔细jdk的javadoc文档split的参数表示的是正则表达式而非一般的字符,而"|"在正则表达式里是有意义的,表示或。你可以通过split("[|]")这样的方式达到你想要的效果。顺便说一句,正则表达式是一个非常有用的工具。
      

  3.   

    是正则表达式
    而其中"|"是正则表达式里的特殊符号,需要转义才能识别
    而"\"是Java里的特殊字符,也需要转义
    故此"\\"代表"\"
    "\\|"代表正则表达式里的"\|"
      

  4.   

    都是正解和和,因为split和replacyAll这样的方法都是永正则的,
    所以很多字符都是需要转义的

    [ ] { } ? $ ... --> \\原来的字符
    \ --> \\\\
      

  5.   

    难怪thinking injava里把它和正则表达式一起讲