[英]Removing special character from Java String
我正在努力解决从java中的原始文本中删除符号和特殊字符并且无法找到方法。 该文本来自网站中的自由文本字段,该字段可能包含任何字面意思。 我从外部源获取此文本,无法控制更改设置。 所以我必须在我的最后工作。 一些例子是
1)贝伦🐺应该是 - >贝伦
2)阿丽亚娜👑应该是 - >阿丽亚娜
3)哈林🌊应该是 - >哈林
4)Yz🏳️🌈应该是 - > Yz
5)ここさけは7回は见に行くぞ👍💟应该是 - >ここさけは7回は见に行くぞ
6)应该是 - >دميازرقوطنيازرق
有什么帮助吗?
你可以尝试这个在字符串中找到所有表情符号的正则表达式:
regex = "[\\ud83c\\udc00-\\ud83c\\udfff]|[\\ud83d\\udc00-\\ud83d\\udfff]|[\\u2600-\\u27ff]"
然后使用replaceAll()
方法删除其中的所有表情符号:
String text = "ここさけは7回は見に行くぞ👍💟 ";
String regex = "[\\ud83c\\udc00-\\ud83c\\udfff]|[\\ud83d\\udc00-\\ud83d\\udfff]|[\\u2600-\\u27ff]";
System.out.println(text.replaceAll(regex, ""));
输出 :
ここさけは7回は見に行くぞ
如果你的意思是“特殊字符”是代理对,试试这个。
static String removeSpecial(String s) {
int[] r = s.codePoints()
.filter(c -> c < Character.MIN_SURROGATE)
.toArray();
return new String(r, 0, r.length);
}
和
String[] testStrs = {
"belem 🐺",
"Ariana 👑",
"Harlem 🌊",
"Yz 🏳️🌈",
"ここさけは7回は見に行くぞ👍💟",
"دمي ازرق وطني ازرق 💙🔵🔵🔵🔵"
};
for (String s : testStrs)
System.out.println(removeSpecial(s));
结果
belem
Ariana
Harlem
Yz
ここさけは7回は見に行くぞ
دمي ازرق وطني ازرق
对于空格使用字符类,对“任何语言的任何字母或数字”使用POSIX字符类:
str = str.replaceAll("[^\\s\\p{Alnum}]", "");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.