如何从 Unicode 字符串中删除杂项符号块

How to remove Miscellaneous Symbols Block from the Unicode String

我想 remove miscellaneous symbols block from Unicode string 使用正则表达式也可以尝试,但是 none 其中的正则表达式我认为当前任何人都可以帮助我解决这个问题如何从字符串中删除杂项符号块。

Unicode 字符串

\u263A\uD83D\uDE0A\uD83D\uDE22)\uD83C\uDF82

代码:

String input = "\u263A\uD83D\uDE0A\uD83D\uDE22)\uD83C\uDF82";
input.replaceAll("[\u2600-\u26FF]|[\u2700-\u27BF]", "");

预期:

\uD83D\uDE0A\uD83D\uDE22)\uD83C\uDF82

但我无法解决这个问题。

它不起作用,因为 String is immutable 在 Java 中你必须像这样使用将结果分配给输入:

String result = input.replaceAll("[\u2600-\u26FF]|[\u2700-\u27BF]", "");

或者简单地说:

input = input.replaceAll("[\u2600-\u26FF]|[\u2700-\u27BF]", "");

因此,如果您打印这样的照片:

System.out.println(input);
System.out.println("\uD83D\uDE0A\uD83D\uDE22)\uD83C\uDF82");

两者都给出:

)
)

如果输入文本包含 u 转义字符,如由反斜杠、'u' 和 4 个十六进制数字组成的文本,请先将它们转换为真正的 chars。

input = StringEscapeUtils.unescapeJava(Input); // From Apache commons
input = input.replaceAll("[\u2600-\u26FF]|[\u2700-\u27BF]", "");