为什么我的分裂过于野心勃勃?

时间:2013-06-29 18:26:10

标签: java split

在这个课程中,我在不同的分隔符上分割变量(即||和&&)

这是我的班级:

public class Test {


    public static void main(String[] args) {
        String orStatement = "here||there";
        String andStatement = "here&&there";
        splitOr(orStatement);
        splitAnd(andStatement);
    }
    public static String[] splitOr(String stringvar){

        if(!stringvar.contains("||")){
            throw new IllegalArgumentException("Must contain a double pipe || to split into or statements");
        }
        String[] orArray = stringvar.split("||");
        for(int i=0;i<orArray.length;i++){
            System.out.println(orArray[i]);
        }
        return orArray;
    }

    public static String[] splitAnd(String stringvar){

        if(!stringvar.contains("&&")){
            throw new IllegalArgumentException("Must contain a double ampersand && to split into and statements");
        }
        String[] andArray = stringvar.split("&&");
        for(int i=0;i<andArray.length;i++){
            System.out.println(andArray[i]);
        }
        return andArray;
    }
}

结果如下:

h
e
r
e
|
|
t
h
e
r
e
here
there

为什么我会得到这种奇怪的雄心勃勃的分裂?

1 个答案:

答案 0 :(得分:5)

这是因为split expects a regular expression|在正则表达式中使用时具有特殊含义。您需要使用斜杠(它本身需要在Java String中转义)来转义管道:

String[] orArray = stringvar.split("\\|\\|");