Haoming Zhang
Haoming Zhang

Reputation: 2842

How to convert a String to String array in Java ( Ignore whitespace and parentheses )

The String will looks like this:

String temp = "IF (COND_ITION) (ACT_ION)";
// Only has one whitespace in either side of the parentheses

or

String temp = "   IF    (COND_ITION)        (ACT_ION)  ";
// Have more irrelevant whitespace in the String
// But no whitespace in condition or action

I hope to get a new String array which contains three elemets, ignore the parentheses:

String[] tempArray;
tempArray[0] = IF;
tempArray[1] = COND_ITION;
tempArray[2] = ACT_ION;

I tried to use String.split(regex) method but I don't know how to implement the regex.

Upvotes: 1

Views: 1424

Answers (3)

Barry Fruitman
Barry Fruitman

Reputation: 12656

If your input string will always be in the format you described, it is better to parse it based on the whole pattern instead of just the delimiter, as this code does:

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);
}

Pattern breakdown:

(.*?)           IF
[/s]            white space
\\((.*?)\\)     (COND_ITION)
[/s]            white space
\\((.*?)\\)     (ACT_ION)

Upvotes: 2

anon
anon

Reputation:

You can use StringTokenizer to split into strings delimited by whitespace. From Java documentation:

The following is one example of the use of the tokenizer. The code:

StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
  System.out.println(st.nextToken());
} 

prints the following output:

  this
  is
  a
  test

Then write a loop to process the strings to replace the parentheses.

Upvotes: 0

Dawood ibn Kareem
Dawood ibn Kareem

Reputation: 79828

I think you want a regular expression like "\\)? *\\(?", assuming any whitespace inside the parentheses is not to be removed. Note that this doesn't validate that the parentheses match properly. Hope this helps.

Upvotes: 0

Related Questions