gpt4 book ai didi

Java 比较两个地方的字符串并排除任何匹配项

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:20 25 4
gpt4 key购买 nike

在成功将一些字符串输入与另一个 .txt 文件进行比较后,我试图得到一个 results.txt 减去所有匹配项的结果。盯着这段代码太久了,我不明白为什么它不起作用。编码新手,如果我能被引导到正确的方向,我将不胜感激!也许我需要不同的方法?对于您可能发出的任何大声的嘘声,请提前致歉。使用Java8。

//Sending a String[] into 'searchFile', contains around 8 small strings.
//Example of input: String[]{"name1","name2","name 3", "name 4.zip"}
^ This is my exclusions list.

public static void searchFile(String[] arr, String separator)
{
StringBuilder b = new StringBuilder();
for(int i = 0; i < arr.length; i++)
{
if(i != 0) b.append(separator);
b.append(arr[i]);
String findME = arr[i];
searchInfo(MyApp.getOptionsDir()+File.separator+"file-to-search.txt",findME);
}
}

^这工作正常。然后,我将结果发送到“searchInfo”并尝试匹配并删除任何重复的(完整的,而不是部分的)字符串。这就是我目前失败的地方。代码运行但没有产生我想要的输出。它经常找到部分字符串而不是完整的字符串。我认为“results.txt”文件每次都会被覆盖...但我不确定!

file-to-search.txt 包含:“name2”、“name.zip”、“name 3.zip”、“name 4.zip”(文本文件只是一行)

public static String searchInfo(String fileName, String findME)
{
StringBuffer sb = new StringBuffer();
try {
BufferedReader br = new BufferedReader(new FileReader(fileName));

String line = null;
while((line = br.readLine()) != null)
{
if(line.startsWith("\""+findME+"\""))
{
sb.append(line);
//tried various replace options with no joy
line = line.replaceFirst(findME+"?,", "");

//then goes off with results to create a txt file
FileHandling.createFile("results.txt",line);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}

我想要得到的是一个结果文件减去任何匹配的完整字符串(不是部分字符串):

例如results.txt 最终为:“name.zip”、“name 3.zip”

最佳答案

根据我掌握的信息,确定。你能做的就是这个

List<String> result = new ArrayList<>();
String content = FileUtils.readFileToString(file, "UTF-8");
for (String s : content.split(", ")) {
if (!s.equals(findME)) { // assuming both have string quotes added already
result.add(s);
}
}
FileUtils.write(newFile, String.join(", ", result), "UTF-8");

使用 apache commons file utils 可以轻松实现。您可以根据需要添加或删除逗号后的空格。

关于Java 比较两个地方的字符串并排除任何匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43657267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com