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

时间:2017-08-15 10:27:28

标签: java string unicode char emoji

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

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

但是我无法解决这个问题。

2 个答案:

答案 0 :(得分:0)

它不起作用,因为你必须使用Java中的String is immutable将结果分配给输入,如下所示:

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");

两者都给出了:

)
)

答案 1 :(得分:0)

如果输入文本包含u-escaped字符,作为由反斜杠,'u'和4个十六进制数字组成的文本,请先将它们转换为真实的char

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