所以,我想要做的是编译一个单词列表,没有重复出8个单独的字典单词列表。一些字典中有标点符号来区分单词。以下是我对与标点删除有关的内容。我已经尝试了几种不同的解决方案,我已经在堆栈溢出中找到了有关正则表达式的问题,以及我在代码中留下的问题。出于某种原因,他们都不会从源词典中删除标点符号。有人能告诉我我在这里做错了什么,可能如何解决?我很茫然,有一位同事检查了一下,他说这也应该起作用。删除标点符号在Java中无法使用字符串替换
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;
字符串是不可变的。阅读你使用的方法的javadoc。 –
我知道字符串是不可变的,然而,从我理解的替换函数应该重新创建整个字符串。 –
你必须这样做:'punctReplacer = punctReplacer.replaceAll(...);',因为函数返回一个新的字符串。 – MicSim