从文本文件中删除选定的单词?

时间:2012-04-20 10:16:13

标签: java parsing lexical-analysis

我必须从文本文件中删除常用词,例如(是,是,我,是等)。在java中这样做的有效方法是什么?

1 个答案:

答案 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”。

请注意,这会产生简单的代码,但是,它会更改文件中的空白格式。如果你有一个带有加倍空格,制表符等的行,那么这一切都会变成这段代码中的一个空格。这只是一个如何实现它的例子,根据您的要求,可能会有更好的方法。