我正在搜索的文件看起来像这样:
keyword:
====================
category1:
----------
St2
Dpe
Tmot:
Bnw
category2:
----------
Rer
Loo
keyword2:
====================
.
.
.
我想做什么:
在我的例子中,我用“关键字”调用我的搜索功能,它会添加从“====================”到“Loo”的所有内容到列表
我已经有了一个肮脏的解决方案,但是如果搜索的关键字实际上不在文本文件中,那就太疯狂了:
BufferedReader b = null;
try {
b = new BufferedReader(new FileReader(txtfile));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// search for the keyword and save the corresponding text block in a list
while ((readLine = b.readLine()) != null)
{
if(readLine.contains(keyword) && !(readLine.contains("_"+keyword)))
{
System.out.println("keyword is: " + readLine);
while ((readLine = b.readLine()) != null)
{
if(readLine.trim().isEmpty()) //stop at empyt line
{
break;
} else {
arr.add(readLine); // add element to list
}
}
}
}
!(readLine.contains(“_”+关键字)语句存在,因为有时关键字也会显示为“Fun_keyword:”而我只想停在“keyword:”行
问题:如果关键字不在文件中,如何重写此功能以使其仍能正常工作(不向列表中添加任何内容)?
答案 0 :(得分:0)
我认为问题是当你希望它打破外部循环时,你的break
语句会打破内部while循环。以下内容应该有效:
outerloop: while(true){ //your outer loop
while(true){ //your inner loop
if(keywordIsFound){
break outerloop;
}
}
}
命名外部循环允许break函数专门打破该循环,而不是内部循环。