我有两个文件:
其中一个是 CSV 文件,其中包含以下内容:
Class
weka.core.Memory
com.google.common.base.Objects
client.network.ForwardingObserver
第二个是一个 txt 文件,其中包含以下内容:
1_tullibee com.ib.client.ExecutionFilter
107_weka weka.core.Memory
101_netweaver com.sap.managementconsole.soap.axis.sapcontrol.HeapInfo
107_weka weka.classifiers.Evaluation
guava com.google.common.base.Objects
57_hft-bomberman client.network.ForwardingObserver
18_jsecurity org.jsecurity.web.DefaultWebSecurityManager
我想检索 txt 文件中包含 CSV 文件中的类的行。为此:
try (BufferedReader br = new BufferedReader(new FileReader("/home/nasser/Desktop/Link to Software Testing/Experiments/running_scripts/exp_23/run3/CSV/MissingClasses_RW_No_Reduction.csv"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println("==>> " + line);
Scanner scanner = new Scanner(new File("/home/nasser/Desktop/Link to Software Testing/Experiments/running_scripts/exp_23/selection (copy).txt"));
while (scanner.hasNextLine()) {
String currentLine = scanner.nextLine();
if(currentLine.contains("**>> " + line)){
System.out.println(currentLine);
}else {
System.out.println("not found");
}
}
}
}
当我运行它时,我发现 CSV 中的所有类都未找到
,这不是我期望的情况。我希望打印以下几行:
107_weka weka.core.Memory
guava com.google.common.base.Objects
57_hft-bomberman client.network.ForwardingObserver
如何解决?
最佳答案
如果你不想要not find
和==>> *
输出,只需删除相应的代码行即可
try (BufferedReader br = new BufferedReader(new FileReader("csv.txt"))) {
String line;
while ((line = br.readLine()) != null) {
Scanner scanner = new Scanner(new File("copy.txt"));
while (scanner.hasNextLine()) {
String currentLine = scanner.nextLine();
if (currentLine.contains(line)) {
System.out.println(currentLine);
}
}
scanner.close(); // added this, could use try-with but that is *advanced*
}
}
这将生成以下输出,完全按照要求:
107_weka weka.core.Memory guava com.google.common.base.Objects 57_hft-bomberman client.network.ForwardingObserver
明显使用过的文件位于我的文件夹中...
关于java - 使用 contains 方法查找包含字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57056300/