2015-04-12 264 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] + " "); 
     } 
    } 
}