我正在使用包含数据行的bufferedreader读取txt文件。然后我尝试根据多个条件过滤掉文本文件的行。在这种情况下,我想跳过以AA开头的行和以DD开头的行。文本文件看起来像
AA Data1
BB Data2
CC Data3
DD Data4
AA Data5
CC Data6
我的代码到目前为止认识到我想要跳过这两个,但是,对于从DD到AA的行,它会跳过DD行,但后来没有认识到我也想跳过下面的AA行所以。所以我的程序输出如下:
BB Data2
CC Data3
AA Data5
CC Data6
它根据需要摆脱了第一个AA,但留下了第二个AA,因为它摆脱了之前的线路中的DD。
以下是我目前的代码:
public static void main(String[] args){
try {
BufferedReader br = new BufferedReader(new FileReader("files/txtfile"));
String line = null;
String previousLine = null;
for (line=br.readLine(); line != null;){
if (previousLine != null) {
if (line.contains("AA")||line.contains("DD")){
previousLine = br.readLine();
}
line= br.readLine();
}
System.out.println(previousLine);
previousLine = line;
}
} catch (IOException e) {
e.printStackTrace();
}
}
任何建议都将不胜感激!
答案 0 :(得分:2)
这样做......
while((line = br.readLine()) != null) {
if(!(line.contains("AA") || line.contains("DD"))) {
System.out.println(line);
}
}
答案 1 :(得分:1)
试试这个
import java.io.*;
public class tehMain {
public static void main(String[] args) {
try( BufferedReader br = new BufferedReader(new FileReader("files/txtfile")) ) {
for (String line=br.readLine(); line != null; line=br.readLine()) {
if (line.contains("AA")||line.contains("DD"))
continue;
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 2 :(得分:1)
这样做你想要的吗?
for (line=br.readLine(); line != null; line=br.readLine()) {
if ( !((line.contains("AA")||line.contains("DD")) ) {
System.out.println(line)
}
}