java - 正则表达式仅删除特殊字符而不删除其他语言字母
问题描述
我使用正则表达式从名称中删除特殊字符。该表达式将删除除英文字母之外的所有字母。
public static void main(String args[]) {
String name = "Özcan Sevim.";
name = name.replaceAll("[^a-zA-Z\\s]", " ").trim();
System.out.println(name);
}
输出:
zcan Sevim
预期输出:
Özcan Sevim
我这样做的结果很糟糕,正确的方法是删除基于ASCII码的特殊字符,这样其他字母就不会被删除,有人可以帮助我使用只删除特殊字符的正则表达式。
解决方案
您可以使用\p{IsLatin}
或\p{IsAlphabetic}
name = name.replaceAll("[^\\p{IsLatin}]", " ").trim();
或者要删除标点符号,只需\p{Punct}
像这样使用:
name = name.replaceAll("\\p{Punct}", " ").trim();
输出
Özcan Sevim
查看正则表达式结构摘要的完整列表,并使用可以帮助您的那个。
推荐阅读
- go - 如何解决考虑预分配 (prealloc) lint?
- amazon-web-services - 放大 CreateApp 权限
- bash - linuxbrew/lib/ld.so:错误的 ELF 解释器:没有这样的文件或目录
- css - 无法缩小 Webpack CSS 输出
- javascript - html 表单:如果 Select>optinon 被选中,则输入要求
- ios - SwiftUI 中 UIViewRepresentable 的大小
- php - 将 xmlns 值添加到 Symfony2 SoapServer 响应
- machine-learning - stroastic gradient Decent、mini batch gradient decent和gradient decent之间的确切区别是什么?
- jenkins - 如何在使用 Sonarqube 时跳过对多模块项目中几个模块的测试文件的扫描
- android - Flutter 中使用 Stack 对齐容器