今天公司后台跟我讲,让我限制不能输入表情,WTF!!!说后台目前不支持存储,会导致数据库报错...
然后我各种网上找资料,发现各种都不能满足搜狗输入法所有表情限制。最后自己总结出这些
public static InputFilter emojiFilter = new InputFilter() {
Pattern emoji = Pattern.compile(
"[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",
Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
Matcher emojiMatcher = emoji.matcher(source);
// if (emojiMatcher.find()) {
for (int index = start; index < end; index++) {
int type = Character.getType(source.charAt(index));
if (type == Character.SURROGATE) {
return "";
} else {
if (emojiMatcher.find()) {
return "";
}
}
}
return null;
}
};
这样的一个过滤器,个人测试是可以过滤掉搜狗输入法的所以emoji表情。
etInstruction.setFilters(new InputFilter[]{new InputFilter.LengthFilter(200), AppHelper.emojiFilter});
使用的话,就是这样,不过设置了setFilters,xml里面的maxLength就没用了,所以也需要在这里设置。