我有一个多行文本输入文件:如果存在字符串“日志编号:”,则紧随其后的是一个日志编号。如果字符串“日志编号:”不存在,则该记录中没有日志编号。总是有字符串“日志日期:”。它在“日志编号:”之后(如果存在),如果不存在,则出现在文件中的该位置。
我inputLine
的结果是BufferedReader
逐行读取我的文件。
...
if((inputLine.indexOf("Log Number:"))>-1) {
logNumRecStart = inputLine.indexOf("Log Number:")+12;}
else
logNumRecStart = 0;
logNumRecEnd = inputLine.indexOf("Log Date:");
...
logNumber = inputLine.substring(logNumRecStart,logNumRecEnd);
...
当我输出 Start 和 End indeces 时,这是我得到的示例。
49>>> -0 to 357
50>>> -0 to 361
51>>> -0 to 384
52>>> -371 to 390
53>>> -315 to 334
54>>> -325 to 352
记录 49-51 是“日志编号:”未出现在输入行中的情况,并且正如预期的那样,logNumRecStart
设置为 0。记录 52-54确实包含“日志编号:”,但索引被设置为负数number,导致我的子字符串出现越界异常。目视检查文件表明在适当的行中存在(或不存在)测试值。我的logNumRecEnd
价值在所有情况下都是正确的。
通过计算源文件中 的字符inputLine
,我已经验证了如果 的负值logNumRecStart
是正的,那么它就是正确的数字。
我没有使用lastIndexOf
,所以我不知道为什么我会得到负值。任何人都可以看到我遗漏的东西或我需要检查我没有提到的东西吗?