我假设你的线条比“A”,“B”和“C”更复杂,但是有一些方法可以从“C”中选择“B”。
(如果他们真的是A,B anc C那么你不需要存储任何东西)
我做了一个小型的状态机类型程序。
state = Base;
while(there are more lines)
{
line = read_a_line()
switch(state) {
case Base:
if (line.isTypeA()) {
storedLines.add(line);
state = GotA;
}
else {
ouput(line);
}
break;
case GotA:
if (line.isTypeB()) {
storedLines.add(line);
state = gotB;
}
else {
output(storedLines);
output(line);
state = Base;
}
break;
case GotB:
if (line.isTypeC()) {
storedLines.clear();
}
else {
output(storedLines);
output(line);
}
state = Base;
break;
}
// TODO: special case handling to make sure you write everything at the end of the
// file.