我编写了一个程序来计算一个很长的字符串中单词的频率。我的问题是,程序将例如“*it”(考虑*引号)和“it”计算为不同的单词,因此将它们放入不同的类别。
我尝试用以下代码替换我所知道的所有标点符号:
text = text.replace("\n", " ");
text = text.replaceAll("\\p{Punct}", " ");
text = text.replace("\"", "");
text = text.replace("–", "");
text = text.replace("\t", "");
不幸的是,代码不起作用,我认为这是因为 Unicode 中有很多不同的引号,我看不出它们之间的区别,所以有没有办法删除除字母和之外的所有 Unicode 字符使用 String.replaceAll 方法删除空格,还是必须创建一个 CharArray 并从那里继续?
非常感谢,任何帮助将不胜感激。
最佳答案
我认为这可能会做到
text = text.replaceAll("[^a-zA-Z0-9 ]", "");
这将删除所有非字母数字或特殊字符的字符。
编辑:-
按照 @npinti 的建议
text = text.replaceAll("[^\\p{L}0-9 ]", "");
关于java - String.replaceAll 方法是否有一个仅保留字母和空格的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59628461/