我使用正则表达式从名称中删除特殊字符。该表达式将删除除英文字母以外的所有字母。
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
查看 Summary of regular-expression constructs 的完整列表并使用可以帮助您的那个。
关于java - 正则表达式仅删除特殊字符而不删除其他语言字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51018532/