gpt4 book ai didi

java - 排除文件中字符串的其他单词 (Java)

转载 作者:行者123 更新时间:2023-12-02 03:20:04 25 4
gpt4 key购买 nike

我有一个从文件加载字符串并返回它的方法。

public String loadStopwords(File targetFile) throws IOException {

File fileTo = new File(targetFile.toString());
BufferedReader br;
String appString = null;

try {
br = new BufferedReader(new FileReader(fileTo));
String st;
while((st=br.readLine()) != null){
System.out.println(st);
appString = st;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return appString;

}

我想将此字符串作为另一个方法的参数传递,再加上一个文件;我想读取这个文件,排除与我在字符串中传递的单词不同的所有单词。例如。在我的文件中,我有[“我的房子又漂亮又大”],我传递了字符串[“美丽的大绿色”],我必须保存新的字符串[“美丽的大”]。我尝试过这个,但它不起作用:

public String removeOtherWords(File targetFile, String excludingWords) {

ArrayList<String> excludeWordsList = new ArrayList<>();
excludeWordsList.addAll(Arrays.asList(excludingWords.split(" ")));

ArrayList<String> wordList = new ArrayList<String>();
try(Scanner sc = new Scanner(new FileInputStream(targetFile))){

while(sc.hasNext()){

for (int i = 0; i < excludeWordsList.size(); i++) {

if (sc.toString() == excludeWordsList.get(i)) {
wordList.add(sc.next());
}
}

}
sc.close();
//sc.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


return wordList.toString();

}

最佳答案

您正在使用 == 来比较字符串。这是错误的 - 您应该使用 equals()。您还可以使用 lambda 功能重构代码:

public String removeOtherWords(File targetFile, String excludingWords) throws IOException {
List<String> lines = Files.readAllLines(targetFile.toPath());
List<String> excludingWordsList = Arrays.asList(excludingWords.split(" "));
return lines.stream()
.flatMap(line -> Arrays.stream(line.split(" ")))
.filter(excludingWordsList::contains)
.collect(Collectors.joining(" "));
}

关于java - 排除文件中字符串的其他单词 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56932223/

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