Java 即使出现罕见的 none 空格,也会从文件中过滤掉单词

Java filter words out of file even when rare none spaces occur

我正在为学校做一项大数据作业,为了让我的代码正常工作,我需要从文本文件中过滤出单词。

当然,我阅读了文件并使用 replaceAll("[^a-zA-Z0-9]", ""); 过滤了我不需要的东西

但这带来了一个问题。因为我过滤空格并且有一些特殊情况,例如:

wobbewy!'--'Wobbewy,'

我得到这样的话:

wobbewywobbewy

有没有办法过滤空格上的单词并过滤掉这些特殊情况,而不需要像大量的 if 语句一样?

我尝试修复后发生的示例代码:

while ((thisLine = bufferedReader.readLine()) != null) {
        String[] woord = thisLine.toString().trim().split("\s+");
        for(int i=0; i<woord.length; i++){
            normalWord = woord[i].replaceAll("[^a-zA-Z]+", " ");
            normalWord = normalWord.toLowerCase();

然后我得到如下输出:

xxv(多个空格)my

删除特殊字符时,有关字边界的信息会丢失。

replaceAll("[^a-zA-Z0-9]", "");更改为replaceAll("([^a-zA-Z0-9]|\s)+", " ");(将特殊字符和白色space替换为单个space)。

拆分会消耗输入,因此拆分 "non word" 个字符:

String[] woord = thisLine.trim().split("[^a-zA-Z0-9']+");

请注意,我将撇号添加到要保留的字符中,这将使像 "don't" 这样的词被视为一个词。