2015-10-02 59 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

相关问题