2012-04-22 1 views
1

Im正規表現を使用してBitSet normal toStringをバイナリ文字列に変換します。たとえば、myBitSet.toString()が{10}を返す場合は、10番目と0番目のビットを設定しますが、10番目だけを設定する必要があります。正規表現 "\ d +"は、文字列 "{10}"で整数を2回検索します。マッチャーは10と0に一致します

... 
    Matcher m = Pattern.compile("(?=(" + "\\d+" + "))").matcher(temp); 
    while(m.find()) { 
     String test2 = m.group(1); 
     answer.setCharAt((2*OpSize -1 - Integer.valueOf(m.group(1))), '1'); 

    } 
    ..... 
+0

m.groupは、(1)各ループに含まれている正確に何を把握するために、いくつかのデバッグ文を追加します:あなたは、単にとにかく.group(0)である全体の一致を使用することができますので、あなたはまた、キャプチャグループを必要としません。 –

答えて

6

あなたの問題は、正規表現がマッチを重ね見つけlookahead assertion(?=...)を使用していることです。私はこのような状況であなたがそれを必要とする理由を考えることができません。

削除してみます。それは数字だけが見つかるのを確実にします。

Matcher m = Pattern.compile("\\d+").matcher(temp); 
while(m.find()) { 
    String test2 = m.group(0); // why is this here? You're not using it. 
    answer.setCharAt((2*OpSize -1 - Integer.valueOf(m.group(0))), '1'); 
} 
+0

ありがとう、私は少し盲目に行き、それをもう見なかった:D – ollo

関連する問題