Java 使用Contains方法过滤输入的多个不同行
我正在使用bufferedreader读取一个txt文件,其中包含数据行。然后,我尝试根据多种条件过滤掉文本文件中的行。在本例中,我想跳过以AA开头的行和以DD开头的行,文本文件如下所示Java 使用Contains方法过滤输入的多个不同行,java,bufferedreader,contains,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 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();
}
}
任何建议都将不胜感激 试试这个
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();
}
}
}
试试这个
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();
}
}
}
这是你想要的吗
for (line=br.readLine(); line != null; line=br.readLine()) {
if ( !((line.contains("AA")||line.contains("DD")) ) {
System.out.println(line)
}
}
这是你想要的吗
for (line=br.readLine(); line != null; line=br.readLine()) {
if ( !((line.contains("AA")||line.contains("DD")) ) {
System.out.println(line)
}
}
做这个
while((line = br.readLine()) != null) {
if(!(line.contains("AA") || line.contains("DD"))) {
System.out.println(line);
}
}
做这个
while((line = br.readLine()) != null) {
if(!(line.contains("AA") || line.contains("DD"))) {
System.out.println(line);
}
}
想解释一下你的答案吗?这个仍然只捕获要过滤的第一行,但仍然返回第二行。在我描述的文本文件中,它过滤掉了“DD Data 4”,但返回了它下面的“AA Data 5”行。while将继续读取每一行,并将其设置为
line
,直到它达到null。每次读取一行时,它都会检查该行是否不包含AA或DD。如果不包含AA或DD,则打印该行。编辑它以修复一个始终为真的问题。是否要解释您的答案?此选项仍然只捕获要筛选的第一行,但仍然返回第二行。在我描述的文本文件中,它过滤掉了“DD Data 4”,但返回了它下面的“AA Data 5”行。while将继续读取每一行,并将其设置为line
,直到它达到null。每次读取一行时,它都会检查该行是否不包含AA或DD。如果不包含AA或DD,则打印该行。编辑它以修复一个始终为真的问题。嗯,尝试此操作没有输出,当我停止进程时,它给出了退出代码130Hm,尝试此操作没有输出,当我停止进程时,它给出了退出代码130