2015-04-12 266 views
0

的線我有一個字符串線,可以分割字符串

AND A B C -> D 
OR A B -> D 
NAND A B C D E -> F 
............ 

我如何分割字符串行逼到A B C D沒有第一個字符串標記(AND,OR,NAND)和不->和應修剪空白處?我在這裏做,但它給了我一個輸出

or A B C 
D 

public static void main(String [] args)throws IOException 
    { 
     String str = "or A B C -> D"; 
     String[] array = str.split("->"); 
     String[] leftSide = array[0].trim().split(array[0]); 
     String[] rightSide = array[1].trim().split(" "); 

     for(int i = 0; i < leftSide.length; i++) 
     { 
      System.out.println(leftSide[i]); 
     } 

     for(int i = 0; i < rightSide.length; i++) 
     { 
      System.out.println(rightSide[i]); 
     } 
    } 

回答

1

將字符串拆分爲空格「」,然後遍歷結果數組,刪除任何多於1個符號的序列。

String str = "or A B C -> D"; 
    String[] array = str.split(" "); 
    List<String> list = Arrays.asList(array); 
    String currentString; 

    for(int i = 0; i < list.size(); i++) 
    { 
     currentString = list.get(i); 

     if(currentString.length() >1) { 
      list.remove(currentString); 
     } 
    } 

    System.out.println(list); 
1
 String str = "AND A B C -> D"; 
     // \\s+ for multiple white spaces -> is for your request 
     StringTokenizer st = new StringTokenizer(str, "\\s+ ->"); 

     boolean isFirstToken = true; 
     while (st.hasMoreTokens()) { 
      if (isFirstToken) { 
       isFirstToken = false; 
       st.nextToken();//For first iteration 
       continue; 
      } 
      System.out.print(st.nextToken() + " "); 
     } 
0

發生了什麼事是你分裂的「 - >」,給予 「或A B C」和「d」。然後你修剪它們,然後把它們分開,特別是沒有任何東西(你自己分割左邊,右邊是「」但是「D」沒有空間可以分開,這就給你看到了結果

您可以只定義所有這一些陣列有效的東西,然後拆分的一切,然後只保留這是有效的東西。

public static final String[] VALUES = new String[] {"A","B","C","D"}; 
public static void main(String [] args) 
{ 
    String str = "or A B C -> D"; 
    String[] array = str.split(" "); 
    for (int i = 0; i < array.length; i++) { 
     if (Arrays.asList(VALUES).contains(array[i])) { 
      System.out.print(array[i] + " "); 
     } 
    } 
} 

或者,您也可以做到這一點反過來,如果更有意義爲您的應用程序 - 定義不應包含的術語列表。

public static final String[] EXCLUDE = new String[] {"AND", "OR", "->"}; 
public static void main(String [] args) 
{ 
    String str = "or A B C -> D"; 
    String[] array = str.split(" "); 
    for (int i = 0; i < array.length; i++) { 
     if (!(Arrays.asList(EXCLUDE).contains(array[i]))) { 
      System.out.print(array[i] + " "); 
     } 
    } 
}