2015-10-02 98 views
0

例如,讓我們說有喜歡的字符串: 「AB(CD)E」拆分空格,除非字符串中有括號。 Java的

我想字符串分割成像一個數組列表:

  1. 數組1 「A」
  2. ARRAY2 「B」
  3. ARRAY3 「CD」
  4. Array4 「E」

目前是這樣的:

  1. 數組1 「A」
  2. ARRAY2 「B」
  3. ARRAY3 「(C」
  4. Array4 「d)」
  5. Array5 「E」

這是我必須拆分空間:

Scanner Str = new Scanner(input); 
if (Str.hasNext()) 
    for(int i = 0; Str.hasNext(); i++) { 
     args.add(i, Str.next()); 
    } 

謝謝喲ü爲你的時間

+0

您的要求是不明確的。請詳細說明 – Rehman

回答

0

我希望這能解決你的問題

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

    public class RegExDemo2 { 

     public static void main(String [] args) 
     { 
      String input = "A B (C D) E"; 
      String output = input.replaceAll("\\s\\([^)]*?\\)", "").trim(); 
      ArrayList<String> newoutput = new ArrayList(Arrays.asList(output.split(" "))); 
      Pattern p = Pattern.compile("\\((.*?)\\)"); 
      Matcher m = p.matcher(input); 

      while(m.find()) { 
       newoutput.add(m.group(1)); 
      } 
      for(String test: newoutput) 
      { 
       System.out.println("Array "+test); 
      } 
     } 

    } 
+0

謝謝你的工作很好 – ocboogie

2

我認爲你必須處理輸入兩次。首先,您必須確定括號內的內容,並且必須用新符號|替換空格。如果有許多括號,那麼它已經完成了一個循環。然後,一旦你處理括號,那麼你可以拆分字符串,並最終新符號必須替換爲空格。所以字符串會改變如下。

  1. 「A B(C d)E」
  2. 「A B C | d E」
  3. 然後分裂,取代|並添加到數組列表中。
+0

謝謝我會試試 – ocboogie

相關問題