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

Pur*_*ret 2 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是结果:

h
e
r
e
|
|
t
h
e
r
e
here
there
Run Code Online (Sandbox Code Playgroud)

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

ass*_*ias 5

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

String[] orArray = stringvar.split("\\|\\|");
Run Code Online (Sandbox Code Playgroud)