public class test {
public static final String DIVIDER = Character.toString((char) 30);
public static void main(String[] args){

String s = "1215801756测试测试"+"测试"+ DIVIDER + "中华人民共和国";

String [] infos = s.split(DIVIDER);

for(int i=0; i < infos.length; i++){
System.out.println(i+" = "+infos[i]);
}
}
}结果竟然为:
0 = 1215801756测试
1 = 测试
2 = 测试
3 = 
4 = 中华人民共和国public class test {
public static final String DIVIDER = Character.toString((char) 29);
public static void main(String[] args){

String s = "1215801756测试测试"+"测试"+ DIVIDER + "中华人民共和国";

String [] infos = s.split(DIVIDER);

for(int i=0; i < infos.length; i++){
System.out.println(i+" = "+infos[i]);
}
}
}
结果:
0 = 1215801756测试测试测试
1 = 中华人民共和国

解决方案 »

  1.   

    不会吧,我的eclipse3.1.2 jdk1.5
      

  2.   

    该程序单独写java文件通过命令行javac  java, 运行结果仍然是0 = 1215801756测试测试测试
    1 = 中华人民共和国
    you may try this way...
      

  3.   

    看来是系统的原因, 我同事运行是对的, 而且在他机器上打开我的test.java文件,发现String s = "1215801756测试 测试 "+"测试 "+ DIVIDER + "中华人民共和国";中间有空格
      

  4.   

    我的运行环境跟楼主完全一样,但运行你的程序并没有得到你那种“奇怪”的结果,而是 kevinliuu 那种“正常”的结果。但我知道怎么能让程序变成能得到跟你一样的结果,你可以把程序改成下面的样子就可以了:public class test {
        public static final String DIVIDER = Character.toString((char) 30);
        public static void main(String[] args){
            String s = "1215801756测试\u001E测试\u001E"+"测试\u001E"+ DIVIDER + "中华人民共和国";
            String [] infos = s.split(DIVIDER);
            for(int i=0; i < infos.length; i++){
                System.out.println(i+" = "+infos[i]);
            }
        }
    }或者,换一个说法,用 UltraEdit 之类能进行二进制编辑的文本编辑器打开你原来的源程序,应该能在里面相应位置找到“1E”字节。
      

  5.   

    hehe, 看来楼主自己已经找到问题了,其实你的 test.java 里面那个不是“空格”,而是一个“1E”字节。