2013-06-29 53 views
2

在這個類我在不同的分隔符(即||和& &)拆分變量爲什麼我的分裂過分雄心勃勃?

這裏是我的類:

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 

爲什麼我會得到這個奇怪的雄心勃勃的分裂?

回答

5

這是因爲split expects a regular expression|在正則表達式中使用時有特殊的含義。你需要用斜線(它本身需要在Java字符串中轉義)轉義管道:

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

這很有道理,我猜''|「'是匹配字母之間的'字符'嗎? – Pureferret