java - String.replaceAll 方法是否有一个仅保留字母和空格的正则表达式

标签 java replace replaceall

我编写了一个程序来计算一个很长的字符串中单词的频率。我的问题是,程序将例如“*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/

相关文章:

java - 在运行 Swing 应用程序中替换 AWT EventQueue 的安全方法

java - Ebean ManyToMany 与桥表查找所有查询

java - 如何向复杂查询添加 HQL 子句 (WHERE COUNT()< MAX_VAL)

javascript - 用/使用javascript替换字符串中的all\with

Java 正则表达式 从文本中替换日期

Java RandomAccessFile 从开始截断

c# - 字符串仅替换为特定的子字符串

bash - 用 sed 搜索和替换 $ 符号

visual-foxpro - FoxPro 将货币转换为数字

java - 多次使用 replaceAll() String 方法