上面的代码实现思路都是正确的,不过我在使用中发现了一点小小的问题,用搜狗和百度输入法切换到英文输入的时候,会出现异常,具体表现为输入 “the” 这个单词时,
输入 t 输入框显示 t
接着输入 h 显示 tth
输入 e 显示 tththe
我做了如下的修改
public static CharSequence filterEmoji(CharSequence s) {
char currentChar;
char realChar;
int cur = 0;
int startIndex, endIndex;
while (cur < s.length()) {
currentChar = s.charAt(cur);
realChar = currentChar;
startIndex = endIndex = cur;
if (currentChar >= 0xD800 && currentChar <= 0xDBFF && (cur + 1) < s.length()) {
char nextChar = s.charAt(++cur);
realChar = (char) (0x10000 + (currentChar - 0xD800) * 0x400 + (nextChar - 0xDC00));
endIndex = cur;
}
if (emojiSignatureSet.contains(realChar)) {
CharSequence tempStart = s.subSequence(0, startIndex);
CharSequence tempEnd = s.subSequence(endIndex + 1, s.length());
s = tempStart.toString() + tempEnd;
cur = startIndex;
} else {
cur = endIndex + 1;
}
}
return s;
}
Emoji 识别与过滤后台提了一个需求,要求用户输入上传的内容中不能带 Emoji。网上有一些资料,都提到了过滤 Emoji 的方法,但都存在多过滤或少过滤的情况。我从官方的标准资料入手,希望能解...