我必须从文本文件中删除常用词,例如(是,是,我,是等)。在java中这样做的有效方法是什么?
答案 0 :(得分:4)
您必须读取文件,跳过要删除的字词,然后再将文件写回。
因此,您可能更愿意在每次阅读时跳过您想忽略的字词 - 取决于您的使用案例。
要逐行删除单词(可能不是你想要的方式),你可以这样做(使用google guava):
// the words you want to remove from the file:
//
Set<String> wordsToRemove = ImmutableSet.of("a", "for");
// this code will run in a loop reading one line after another from the file
//
String line = "Some words read from a file for example";
StringBuffer outputLine = new StringBuffer();
for (String word : Splitter.on(Pattern.compile("\\s+")).trimResults().omitEmptyStrings().split(line)) {
if (!wordsToRemove.contains(word)) {
if (outputLine.length() > 0) {
outputLine.append(' ');
}
outputLine.append(word);
}
}
// here I'm just printing, but this line could now be written to the output file.
//
System.out.println(outputLine.toString());
运行此代码将输出:
Some words read from file example
即,省略“a”和“for”。
请注意,这会产生简单的代码,但是,它会更改文件中的空白格式。如果你有一个带有加倍空格,制表符等的行,那么这一切都会变成这段代码中的一个空格。这只是一个如何实现它的例子,根据您的要求,可能会有更好的方法。