满意答案

02ae427d08e371d7e90d5b995e828d6d.png

jdubysct

2016.03.15

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:43%    等级:8

已帮助:863人

解决方案

对于字符串处理,首选就是正则表达式去处理,而在android系统中可以自定义InputFilter去过滤需要处理掉的字符串,代码如下

InputFilter emojiFilter = new InputFilter ( ) {

@Override

public CharSequence filter ( CharSequence source , int start , int end , Spanned dest , int dstart ,

int dend ) {

}

} ;

随后我查阅了 emoji 的wikipedia与 Github ,从中提取出表情的一个大概unicode范围,由于Java可以直接对unicode进行匹配,这样我们可以很省事直接写出Pattern即可,代码如下

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 ( ) ) {

return "" ;

}

return null ;

}

} ;

基本上这样就能过滤掉emoji表情了

00分享举报

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐