如何在Java中将String转换为String数组(忽略空格和括号)

时间:2011-12-25 22:18:51

标签: java arrays string

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)方法,但我不知道如何实现正则表达式。

3 个答案:

答案 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