2016-04-08 7 views
-2

私はこれらのような入力文字列にしたい:私は各カッコ[]内にあるすべての整数を入れるにはどうすればよい [4, 5, 6] + [1, 2, 3]Javaの整数のセットに整数を含む入力文字列を変換は

[1, 1, 12] - [22, 12, 0] ...

セットに。 例:結果は、あなたが入力文字列(あなたは正規表現を検証/テストするためにregexplanetを使用することができます))から[]トークンを抽出する正規表現の式たち二組

[4, 5, 6] and [1, 2, 3]
[1, 1, 12] and [22, 12, 0]

+2

あなたはこれまで何をしていますか? – Rehman

+0

私はこれをchar配列に変換してみました。しかし、問題は0から9までの数字だけを変換することができます.2桁以上の数字(> 10)はすべて機能しません。 –

+1

郵便番号 – Rehman

答えて

0

私はそれはあなたがこれをやろうとしているかもしれない、あなたの質問に答えるかわからない:

String input = "[4, 5, 6] + [1, 2, 3]" ; 
    Pattern p = Pattern.compile("\\[(.*?)\\]"); 
    Matcher m = p.matcher(input); 
    while (m.find()){ 
     Set<Integer> S = new TreeSet<>(); 
     String g = m.group(1); 
     Stream.of(g.split(",")).forEach(i -> S.add(Integer.parseInt(i.trim())));  
     System.out.println(S); 
    } 

はそれがお役に立てば幸いです。

+0

正しく動作しました。ありがとうございました:D –

+0

答えを有用とマークしてください.-) – joel314

0

可能性があることでしょう。次に、文字列トークナイザを使用して、取り出されたトークンのセットを作成することができます。以下のようにプログラムがハイレベルになります。

// Set containing subsets which contain integer values between [] 
Set<Set> sets = new HashSet(); 

String in = "[4, 5, 6] + [1, 2, 3] [1, 1, 12] - [22, 12, 0]"; 

// Get all tokens between [] 
Matcher matcher = Pattern.compile(...).matcher(in); 
while (matcher.find()) { 

    Set<int> subSet = new HashSet(); 
    sets.add(subSet); 

    // Get integer values between [] 
    String values = matcher.group(); 

    // Add all integers to subset 
    StringTokenizer st = new StringTokenizer(values, ","); 
    while(st.hasMoreTokens()) { 
     subset.add(st.nextToken()); 
    } 
} 

注:私がテストしたり、それは障害がある可能性があり、それを行うには、より最適な方法があるかもしれませんので、上記のコードをコンパイルしていません!

関連する問題