解决方案 »

  1.   

    给 | 转义         String stringAb = new String("CALL_ID|AH|34");
            String[] strings = stringAb.split("\\|");
            for (String str : strings) {
                System.out.println(str);
            }结果CALL_ID
    AH
    34
      

  2.   


    字符串是这样分割。不是分割的问题。是分割后算一个字符串的count有问题,明明是7它却是8。
    好像是编码的问题。我用的windows记事本转的编码。转后的编码好像是utf-8 +bom而不是utf-8。不知道为什么java不支持utf-8 +bom。 
      

  3.   

    长度应该没问题,楼主可以再试试 String stringAb = new String("CALL_ID|AH|34");
            String[] strings = stringAb.split("\\|");
            for (String str : strings) {
                System.out.println(str.length());
            }结果7
    2
    2
      

  4.   

    长度应该没问题,楼主可以再试试 String stringAb = new String("CALL_ID|AH|34");
            String[] strings = stringAb.split("\\|");
            for (String str : strings) {
                System.out.println(str.length());
            }结果7
    2
    2

    不是长度问题。你把CALL_ID|AH|34 放到txt文档里。然后另存为utf-8格式。再读出来分割。 "CALL_ID".equals(strings [0])结果为false。
      

  5.   

    楼主换个编辑器试试,换个notepad++,或editplus试试。
    我之前遇到过类似的情况,在notepad++ 里面输入一段字符串,然后分割后第一个字符串前面总有一个空格。
    但是 如果用windows默认的记事本的notepad记事本输入的话,就没有那个空格了。如果这个还有问题的话,那应该就是编码格式的问题了。
      

  6.   

    楼主换个编辑器试试,换个notepad++,或editplus试试。
    我之前遇到过类似的情况,在notepad++ 里面输入一段字符串,然后分割后第一个字符串前面总有一个空格。
    但是 如果用windows默认的记事本的notepad记事本输入的话,就没有那个空格了。如果这个还有问题的话,那应该就是编码格式的问题了。是的。已经试出来了。这个太坑爹了。一种格式,两种情况。
      

  7.   

    UTF-8 with BOM前3个字节必然是EFBBBF,它不是文件内容,所以你读的时候要去掉
    或者你不要用记事本编辑,换个能用UTF-8无BOM的,比如Editplus,或者你直接用Winhex这种软件把前面三个字节删除。。