1

我使用正则表达式将 BitSet 普通 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 回答