我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《Java字符串分割的三种方法》, 一起来围观吧 https://blog.csdn.net/carssister/article/details/46835027
StringTokenizer里的分隔符不需要使用正则表达式进行转义(直接写即可),String.split()方法中的分隔符需要使用正则表达式进行转义(使用|表示有多个分隔符)。

解决方案 »

  1.   

    ①:
                String test="no pains,no gains";
                String []a=test.split(",");//此处将字符串由逗号分隔开
                System.out.println("分解后的单词个数为:"+a.length);
                for(int i=0;i<a.length;i++)
                {
                    System.out.println(a[i]);
                }
            }
    ②:要想按照多个条件进行分割需要加 |
                String test="no pains,no gains";
                String []a=test.split(" |,");//此处将字符串由空格和逗号分隔开
                System.out.println("分解后的单词个数为:"+a.length);
                for(int i=0;i<a.length;i++)
                {
                    System.out.println(a[i]);
                }
                System.out.println(Arrays.toString(a));
    ③:用竖线 | 分隔字符串,有时会得不到预期的结果  eg:
              1> String[] aa = "aaa|bbb|ccc".split("|"); 得到的结果是每个字符都进行了分割(可自行验证),并不是预期的效果。应将代码改为String[] aa = "aaa|bbb|ccc".split("\\|"); 才能得到正确的结果。
              2> 用 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。   
               例如:String[] aa = "aaa*bbb*ccc".split("*"); 与上文同理应该改为String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结果。
              3>如果想在串中使用"\\"字符,则也需要转义。应这样使用:String[] aa = "aaa\\bbb\\bccc".split("\\\\"); 
              4> 还有就是点号   "."  和以上提到的类似:String[] aa = "aaa.bbb.bccc".split("\\."); 。