所以,我试图做的是编译单个单词列表,而不是8个单独的字典单词列表中的重复。一些字典中有标点符号来分隔单词。以下是我所涉及的标点符号删除。我已经尝试了几种不同的解决方案,我在堆栈溢出方面找到了有关正则表达式的解决方案,以及我在代码中留下的解决方案。出于某种原因,他们都没有从源词典中删除标点符号。有人可以告诉我这是什么我在这里做错了,可能还有如何修复它?我不知所措,让同事检查一下,他说这应该也能正常工作。
int i = 1;
boolean checker = true;
Scanner inputWords;
PrintWriter writer = new PrintWriter(
"/home/htarbox/Desktop/fullDictionary.txt");
String comparison, punctReplacer;
ArrayList<String> compilation = new ArrayList<String>();
while (i <9)
{
inputWords = new Scanner(new File("/home/htarbox/Desktop/"+i+".txt"));
while(inputWords.hasNext())
{
punctReplacer = inputWords.next();
punctReplacer.replaceAll("[;.:\"()!?\\t\\n]", "");
punctReplacer.replaceAll(",", "");
punctReplacer.replaceAll("\u201C", "");
punctReplacer.replaceAll("\u201D", "");
punctReplacer.replaceAll("’", "'");
System.out.println(punctReplacer);
compilation.add(punctReplacer);
}
}
inputWords.close();
}
i = 0;
答案 0 :(得分:5)
该行
punctReplacer.replaceAll(",", "");
返回一个新的String
与你的替代品(你忽略了)。它不修改现有的String
。因此,您需要:
punctReplacer = punctReplacer.replaceAll(",", "");
Strings
是不可变的。创建后,您无法更改它们,任何String
操作方法都会返回一个新的String
答案 1 :(得分:4)
由于字符串是不可变的,您必须重置变量:
punctReplacer = punctReplacer.replaceAll("[;.:\"()!?\\t\\n]", "");
(顺便说一下,不可变意味着一旦设置了你就不能改变它,所以使用String你总是要重置变量,如果你想改变它)