2011-12-25 17 views
1

文字列は次のようになります:(空白や括弧を無視する)

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配列どのを得ることを期待します3 elemetsが含まれている、括弧を無視:

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

私はのstring.Split(正規表現)メソッドを使用しようとしましたが、私にはありません正規表現を実装する方法を知っている。

+0

可能重複(http://stackoverflow.com/questions/225337/how-do-i-split-a-string-with-空白文字を区切り文字とします)、その後、削除する追加のものとして '\('と '\)'を追加することができます(ただし、それらの括弧一例です)。 – birryree

+0

待って、今私はあなたの2番目の例(文字列内に無関係な空白を含む)を考えています。分割したい文字列の種類の良い例を教えてください。条件と動作に空白がありますか?かっこはそこにありますか? – birryree

+0

@birryree条件や動作に空白がなく、かっこはありません –

答えて

0

StringTokenizerを使用すると、空白で区切られた文字列に分割できます。 Javaのドキュメントから:

以下はトークナイザの使用例です。コード:

this 
    is 
    a 
    test 

は次に括弧replaceに文字列を処理するためにループを書く:

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

は、以下の出力を印刷します。

+0

はい、でもかっこは無視します –

+0

'String'クラスの' replace'メソッドを使用して、カッコを空の文字列に置き換えます。 – Kavka

+0

ニース!この方法はうまくいきます! –

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) 
+0

Thx、あなたの答えも非常に役立ちます! –

関連する問題