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" 这样的词被视为一个词。
我正在为学校做一项大数据作业,为了让我的代码正常工作,我需要从文本文件中过滤出单词。
当然,我阅读了文件并使用 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" 这样的词被视为一个词。