2017-01-21 18 views
0

に} {に基づいて文字列を分割する方法:私はこのような文字列を持っているJavaの

"[{1000, 500, 1}, {1001, 501, 1}, {1002, 501, 2}]" (それが唯一の数字は、文字かもしれないです。)

どのように私は、3つの部分に分割することができます: {1000, 500, 1} {1001, 501, 1} {1002, 501, 2}

第二ステップ: スプリット独自のフィールドにそれぞれ新しい部分、例えば{1000, 500, 1},1000,5001。私が試した

もの:

  1. を私はオンライン検索と正規表現とパターンとのMatcherを使用しようとしましたが、どれも働いていないきました。
  2. 私は,に基づいてそれらを分割しようとしましたが、明らかに適切にフォーマットされていません。間にスペースがあります。あらかじめフォーマットする必要があるようですか?

どのようなアイデアですか? ありがとう!

あなたがこの正規表現を使用することができます
+0

内容が数字だけであれば、あなたはその後、 "スペースなしスペース( ")("")、スプリットを置き換えることができますがコンマで、最初の文字( "[")を配列の最初のエントリから削除し、最後の文字を配列( "]")から取り除き、各エントリを再度コンマで区切ります。それはかなり混乱している。 – mrogers

+0

文字列です。私に思い出させるためにありがとう。 – FisherCoder

答えて

5

{\\{[0-9, ]+\\}

public static void main(String[] args) { 
    String string = "[{1000, 500, 1}, {1001, 501, 1}, {1002, 501, 2}]"; 
    Matcher m = Pattern.compile("\\{[0-9, ]+\\}").matcher(string); 
    while(m.find()){ 
     System.out.println(m.group()); 
    } 
} 

プリント:

{1000, 500, 1} 
{1001, 501, 1} 
{1002, 501, 2} 
+0

ありがとうございました。しかし、私の文字列も文字で構成される可能性がありますので、正規表現をMatcher m = Pattern.compile( "\\ {[0-9a-zA-Z、] + \\}")に変更することができます。 ); "、そう? – FisherCoder

+0

はい、うまくいくはずです。 – Malt

関連する問題