我正在为学校进行大数据分配并使我的代码工作,我需要从文本文件中过滤出单词。
当然我读取文件并使用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(多个空格)我的
答案 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']+");
请注意我将撇号添加到字符中以保留,这样可以让像“不要”这样的字样。被视为一个字。