在这个课程中,我在不同的分隔符上分割变量(即||和&&)
这是我的班级:
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
为什么我会得到这种奇怪的雄心勃勃的分裂?
答案 0 :(得分:5)
这是因为split
expects a regular expression和|
在正则表达式中使用时具有特殊含义。您需要使用斜杠(它本身需要在Java String中转义)来转义管道:
String[] orArray = stringvar.split("\\|\\|");