即使很少出现空格,Java也会过滤掉文件

时间:2016-04-03 19:08:12

标签: java file filtering word

我正在为学校进行大数据分配并使我的代码工作,我需要从文本文件中过滤出单词。

当然我读取文件并使用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(多个空格)我的

2 个答案:

答案 0 :(得分:1)

删除特殊字符时,您的字边框信息会丢失。

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

答案 1 :(得分:0)

拆分消耗输入,因此拆分&#34;非word&#34;字符:

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

请注意我将撇号添加到字符中以保留,这样可以让像“不要”这样的字样。被视为一个字。