也许我没有看到森林的树木,但我对Matcher
有一个(对我而言)奇怪的问题。
我在处理StringBuilder时收到此错误消息:
java.lang.StringIndexOutOfBoundsException: String index out of range: 10238
at java.lang.AbstractStringBuilder.charAt(AbstractStringBuilder.java:210)
at java.lang.StringBuilder.charAt(StringBuilder.java:76)
at java.util.regex.Pattern$BnM.match(Pattern.java:5459)
at java.util.regex.Matcher.search(Matcher.java:1248)
at java.util.regex.Matcher.find(Matcher.java:637)
StringBuilder的长度和从中派生的String超出了:
length: 10269
length: 10269
这是我的代码:
Matcher m = LINK_PATTERN.matcher(content);
System.out.println("length: " + content.length());
System.out.println("length: " + content.toString().length());
int hits = 0;
while (m.find()) {
...
content.replace(m.start("absolut"), m.end("absolut"), "");
...
}
m.find()
行是异常触发的地方。
即使在我没有涉及线程/并行处理的测试期间也会出现此问题。 LINK_PATTERN以这种方式定义:
private static final Pattern LINK_PATTERN = Pattern.compile( ...
这种模式有一个命中,但它位于7260位而不是10something。