2016-05-13 14 views
4

この文字列をJavaで分割して、文字列配列の中括弧の間にテキストが挿入されるようにするにはどうすればよいですか?指定されたパターンでJavaの文字列を分割する

GivenString = "(1,2,3,4,@) (a,s,3,4,5) (22,324,#$%) (123,3def,f34rf,4fe) (32)" 

String [] array = GivenString.split(""); 

出力でなければなりません:

array[0] = "1,2,3,4,@" 
array[1] = "a,s,3,4,5" 
array[2] = "22,324,#$%" 
array[3] = "123,3def,f34rf,4fe" 
array[4] = "32" 
+1

使用このパターン[ ' "\\((。*?)\\)"'](https://regex101.com/r/dL9yH9/1)。それで '$ 1'はあなたが必要とするものを含んでいます。 – Shafizadeh

答えて

7

あなたは、使用しようとすることができます。

Matcher mtc = Pattern.compile("\\((.*?)\\)").matcher(yourString); 
+0

[デモ](http://ideone.com/djO439) –

+1

使用: 'while(mtc.find()){String match = mtc.group(1);/* ... * /} 'となります。 – sp00m

+0

パフォーマンスを向上させるために、冗長な量限定子( '*?')の代わりに、閉じ括弧に一致しない貪欲な量限定子を使用してください: '" \\(([^)] *)\\) "' – Andreas

0

通常、あなたはこれがあると、分割()関数を使用したいと思います文字列がキー文字で分割されている場合に、文字列を複数の配列に分割する最も簡単な方法です。

主な問題は、の間にの2文字の情報が必要であることです。この問題を解決する最も簡単な方法は、 '('のすべてのインスタンスを取得する文字列を通過するだろう

String = "1,2,3,4、@)a、s、他の括弧で囲まれていることを心配する必要はありません(これは、あなたがcharで分割することができるように、これは完璧です)分割して最初のパラメータのすべてのインスタンスを2番目のパラメータに置き換える場合はreplace( ""、 "")を使用することをお勧めします(削除するには ""を使用できます)。ここで

が動作する可能性があり、いくつかのサンプルコードです:

String a = "(1,2,3,4,@) (a,s,3,4,5) (22,324,#$%) (123,3def,f34rf,4fe) (32)" 
a = a.replace("(",""); 
//a is now equal to 1,2,3,4,@) a,s,3,4,5) 22,324,#$%) 123,3def,f34rf,4fe) 32) 
String[] parts = a.split("\\)"); 

System.out.println(parts[0]); //this will print 1,2,3,4,@ 

私はそれを完全にテストしていないので、あなたが取り除くために必要があるかもしれない文字列の末尾に不要なスペースで終わる可能性があります!

あなたはパーツ[]をループすることができ、必要なパーツはすべて必要です!

1

最善の解決策はanswer by Rahul Tripathiですが、あなたの質問は「どのようにを分割する」と述べたので、あなたは(例えば、これは割り当てである)split()を使用する必要がある場合は、この正規表現は行います:

^\s*\(|\)\s*\(|\)\s*$ 

それは言う:

  • マッチ続く初め
  • マッチ閉じ括弧で開き括弧開き括弧
  • マッチ終了

全3許可空白で閉じ括弧によります。意味したJava正規表現として

、:

str.split("^\\s*\\(|\\)\\s*\\(|\\)\\s*$") 

regex101 for demoを参照してください。

split()を使用して、問題が主要な開き括弧が最初に空の値が得られ、最初の値の前にスプリットを引き起こすことをされていますラーフルの答えは優れている理由です

array[0] = "" 
array[1] = "1,2,3,4,@" 
array[2] = "a,s,3,4,5" 
array[3] = "22,324,#$%" 
array[4] = "123,3def,f34rf,4fe" 
array[5] = "32" 

、その理由はそのような空の値は表示されません。

関連する問題