使用Contains方法过滤输入

时间:2016-02-04 19:19:39

标签: java bufferedreader contains

我正在使用包含数据行的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();
    }
}    

任何建议都将不胜感激!

3 个答案:

答案 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)
    }
}