我使用正则表达式将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');
}
.....
答案 0 :(得分:6)
您的问题是正则表达式使用lookahead assertion (?=...)
找到重叠匹配。在这种情况下,我无法想到你为什么需要它。
尝试删除它;这将确保只找到整个数字。您也不需要捕获组,因为您可以简单地使用.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');
}