想用分隔符分割字串为子字串,看到String有split函数,想不用自己写了,但是运行结果完全摸不着头脑。
    public static void main(String[] args){
     String n = "ada|badf";
     String[] m = n.split("|");
     for(int i=0;i<m.length;i++){
     System.out.println(m[i]);
     }
    }运行结果如下:a
d
a
|
b
a
d
f
但是当把分隔符改变以后:    public static void main(String[] args){
     String n = "ada~badf";
     String[] m = n.split("~");
     for(int i=0;i<m.length;i++){
     System.out.println(m[i]);
     }
    }输出结果就正常了:ada
badf

解决方案 »

  1.   

    楼主忘了用转义符号了,这样就好了:
    public static void main(String[] args){
            String n = "ada|badf";
            String[] m = n.split("\\|");
            for(int i=0;i<m.length;i++){
                System.out.println(m[i]);
            }
        }
      

  2.   

    有一宗东西叫:Regular Expression
      

  3.   

    java里有一些保留字符的,这是其中之一
      

  4.   

    很多符号都代表有不同的意义,“|”在正则表达式是代表或,所以要转义。就像这个需要两个“\\”,也只表示一个“\”. 还有啥\n表换行之类的。如果你只输个n肯定不能表示,它就表示字母n,所以要转义。
      

  5.   

    这样也可public static void main(String[] args){
            String n = "ada|badf";
            String[] m = n.split("[|]");
            for(int i=0;i<m.length;i++){
                System.out.println(m[i]);
            }
        }
      

  6.   

    public static void main(String[] args){
            String n = "ada|badf";
            String[] m = n.split("\\|");
            for(int i=0;i<m.length;i++){
                System.out.println(m[i]);
            }
        }
      

  7.   

    java 的 String 里缺省使用正则表达式的
      

  8.   

    |是正则表达式的保留字。。你看split的文档也知道。文档已经学很清楚了。是以表达式的形式分割。