我正在读一个具有这种模式的文件:<paper-dropdown-menu>
<paper-listbox attr-for-selected="data-order" selected="1" class="dropdown-content">
<paper-item data-order="0">First</paper-item>
<paper-item data-order="1">Second</paper-item>
<paper-item data-order="2">Third</paper-item>
</paper-listbox>
</paper-dropdown-menu>
但是格式不能保证,这意味着我必须处理一些情况,例如在一行上的一个部分,一行上有许多部分。而且我还需要存储每个令牌的偏移量。所以我使用Matcher运行这样的代码,因为它提供了偏移和标记:
(section1, section2, section3) ...
你可以看到我正试图通过这个匹配器,所以我可以从我停下的地方开始。但现在我有一个问题。在我的最后一次readSection3方法结束后,我测试了我的匹配器没有结束,所以我开始了新一轮的阅读。 然而,当我再次进入while循环,并将匹配器传递给我的readSection1方法时,匹配器突然结束了!为什么会这样?
我也进行了一些测试:
`define a global matcher
while() {
readSection1(matcher, other parameters);
readSection2(matcher, other parameters);
readSection3(matcher, other parameters);
}
它也会输出错误信息。为什么呢?!
好的,奇怪的事情发生了,现在我再次运行这个小程序,错误消失了,但它仍然在我的大计划中。
答案 0 :(得分:0)
如果匹配器找到的最后一个字符串位于输入的末尾,则Matcher.hitEnd()
方法似乎返回true。因此,如果您在文件的最后一部分后面有字符,Matcher.hitEnd()
将返回false,即使它实际上是最后一部分。
但是,我运行了您的测试代码并且没有显示错误消息。您确定发布了与测试相同的代码吗?您使用的匹配器不是您首先初始化的匹配器('loopMatcher'与'匹配器')。