String将如下所示:
String temp = "IF (COND_ITION) (ACT_ION)";
// Only has one whitespace in either side of the parentheses
或
String temp = " IF (COND_ITION) (ACT_ION) ";
// Have more irrelevant whitespace in the String
// But no whitespace in condition or action
我希望得到一个包含三个元素的新String数组,忽略括号:
String[] tempArray;
tempArray[0] = IF;
tempArray[1] = COND_ITION;
tempArray[2] = ACT_ION;
我尝试使用String.split(regex)方法,但我不知道如何实现正则表达式。
答案 0 :(得分:2)
如果您的输入字符串将始终采用您所描述的格式,则最好根据整个模式而不仅仅使用分隔符来解析它,如下所示:
Pattern pattern = Pattern.compile("(.*?)[/s]\\((.*?)\\)[/s]\\((.*?)\\)");
Matcher matcher = pattern.matcher(inputString);
String tempArray[3];
if(matcher.find()) {
tempArray[0] name = matcher.group(1);
tempArray[1] name = matcher.group(2);
tempArray[2] name = matcher.group(3);
}
模式分解:
(.*?) IF
[/s] white space
\\((.*?)\\) (COND_ITION)
[/s] white space
\\((.*?)\\) (ACT_ION)
答案 1 :(得分:0)
我认为你想要一个像"\\)? *\\(?"
这样的正则表达式,假设括号内的任何空格都不被删除。请注意,这不会验证括号是否匹配正确。希望这会有所帮助。
答案 2 :(得分:0)
您可以使用StringTokenizer拆分为由空格分隔的字符串。来自Java文档:
以下是使用tokenizer的一个示例。代码:
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
打印以下输出:
this
is
a
test
然后编写一个循环来处理字符串到括号的replace。