public class Test1 
{
public static void main(String[] args) 
{
String str="TOM:89|JERRY:90|TONY:78";
String[] new1=str.split("|");
for(int i=0;i<new1.length;i++)
{
System.out.println(new1[i]);
}
}
}
答案为什么不是
TOM:89 
JERRY:90
TONY:78"

解决方案 »

  1.   

    |是正则表达式的或操作字符,要用\转义的    public static void main(String[] args) 
        {
            String str="TOM:89|JERRY:90|TONY:78";
            String[] new1=str.split("\\|");
            for(int i=0;i<new1.length;i++)
            {
            System.out.println(new1[i]);
            }
        }
      

  2.   


    public class Test1 
    {
        public static void main(String[] args) 
        {
            String str="TOM:89|JERRY:90|TONY:78";
            //因为|在正则表达式中是逻辑或运算符,X|Y意思是X或Y,所以你的
            //写法等价于“”|“”,所以其实是按“”分隔的,因此没有达到理想的输出
            //改为下面的,用转义字符就好了
            String[] new1=str.split("\\|");
            System.out.println(new1.length);
            for(int i=0;i<new1.length;i++)
            {
             System.out.println(new1[i]);
            }
        }
    }
      

  3.   

    String的几个函数真的挺让人迷糊的split()中的参数,是一个正则表达式,而正则表达式就需要注意特殊的转义字符
    但是像 indexof,startswith等,又用的不是正则表达式而是简单字符串,就不需要转义了。用的时候,还是对照着API文档或者做好单元测试吧
      

  4.   

    一直再试\|,就不知道用\\|
    郁闷,刚学JAVA,得多练习了,谢谢大家...