【发布时间】:2012-04-17 16:01:03
【问题描述】:
我有一些看起来或多或少像这样的代码:
while(scanner.hasNext())
{
if(scanner.findInLine("Test") !=null) {
//do some things
}else{
scanner.nextLine();
}
}
我正在使用它来解析一个 ~10MB 的文本文件。问题是,如果我在 while() 和scanner.nextLine() 上设置断点,我可以看到有时扫描仪位置(在调试窗口中)会回到零。我认为这导致我某种循环爆炸,因为 findInLine() 中的正则表达式从零开始,查看一些文本,推进位置,然后它随机设置回零,所以它必须重新- 再次解析所有文本。
有什么想法会导致这种情况吗?我这样做是否正确?
谢谢
一些附加信息:
Scanner 是从 InputStream 实例化的。调试后,似乎有一个 Scanner 使用的 HeapCharBuffer,它一次只允许 1024 个字符,然后重置。有没有办法避免这种情况,或者做不同的事情?这似乎是可以扫描的少量字符。
德里克
【问题讨论】:
-
输入是什么样的?扫描仪是如何实例化的(分隔符是什么)?请不要发布“或多或少像这样”的代码——发布实际代码。
-
扫描器是从 InputStream 中实例化的。输入只是普通的 ascii 文本。定界符没有改变,对这些函数尤其重要。
-
无论如何,您必须发布一些导致失败的示例输入。
-
什么是“dibug sine”调试?什么是
HearCharBuffer? -
它们显然是拼写错误。 Brian 解决了我的问题,不需要样本数据。
标签: java regex java.util.scanner