1

正規表現を使用して BitSet normal toString をバイナリ文字列に変換します。たとえば、myBitSet.toString() が {10} を返す場合、10 番目と 0 番目のビットを設定しますが、10 番目のみを設定する必要があります。

    ...
    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');

    }
    .....
4

1 に答える 1

6

あなたの問題は、正規表現が重複する一致を見つける先読みアサーションを使用していることです。 (?=...)このような状況でそれが必要になる理由が思いつきません。

削除してみてください。これにより、整数のみが検出されるようになります。.group(0)とにかくある一致全体を単純に使用できるため、キャプチャグループも必要ありません。

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');
}
于 2012-04-22T16:29:58.550 に答える