例如,让我们说一个字符串如下:" A B(C D)E"
我想将字符串拆分为数组列表,如:
目前它是这样的:
这就是我要分割空格的原因:
Scanner Str = new Scanner(input);
if (Str.hasNext())
for(int i = 0; Str.hasNext(); i++) {
args.add(i, Str.next());
}
感谢您的时间
答案 0 :(得分:2)
我认为你必须处理输入两次。首先,您必须识别括号内的内容,并且必须用新符号替换空格。如果有很多括号,那么它就是在一个循环中完成的。然后,一旦处理括号,就可以拆分String,最后新符号必须用空格替换。所以String会改变如下。
答案 1 :(得分: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);
}
}
}