导航:首页 > 净水问答 > android过滤掉表情

android过滤掉表情

发布时间:2022-01-30 02:35:17

① 在android输入框中判断是否有Emoji表情

一般情况下,在手机端下载的第三方输入法中都设置有emoji表情。 包括个别的手机自带输入法功能都会有这样的表情,如下图:

② android怎样过滤字符串中的emoji表情

对于字符串处理,首选就是正则表达式去处理,而在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表情了

③ 手机QQ 发特定信息会掉表情 这个怎么关掉

大约4月23日15时左右,所有安卓版QQ开始出现发送任何信息都掉落鹿晗头像的小表情现象。
一说这和鹿晗庆生有关,明天会自动好。二说可能是腾讯 bug,过会应该会好。

④ Android 判断文本是否含有表情

判断是否有表情?你的表情是怎么构成的?微信那些表情其实都是字符串,比如[微笑]就是代表微笑的表情。

⑤ 求php过滤ios的Emoji表情的方法,如果字符串中包含Emoji表情就删除。

网上已经有开源的了!http://code.iamcal.com/php/emoji/ 你参考下

iOS 5.0之前,苹果都是采用3个字节来承接 emoji 表情,Java 的普通 char 可以支持显示。但 iOS 5.0 之后, 苹果升级了系统自带的 emoji 表情输入法,用的 Unicode 6 标准来统一,是采用4个 bytes 来承接一个 emoji 表情。如果不做处理的话,这种表情直接存储到 mysql5.5 以下的数据库是会报错的。就像这两个表情一样:口口, 在 Windows 8 以下估计都不支持显示,可能会显示成框框,可能压根就是空白, 你可以在 Mac 中使用Safari 浏览器中,就可以看到。经过测试,在 Mac 就算用 Chrome 浏览器(Version 25.0.1364.172)也是不行的。
这种数据在 Mysql 5.5 之前,UTF-8 支持1-3个字节的编码,从 Mysql5.5 开始后,可以支持4个字节的 UTF 编码,但要特殊标记。修改 Mysql 相应存储字段为 utf8mb4 。修改语句如下:
1 ALTER TABLE table_name
2 MODIFY COLUMN content varchar(500) CHARACTER
3 SET utf8mb4 COLLATE utf8mb4_unicode_ci
4 DEFAULT NULL COMMENT 'content of message';
在某种业务情景下,我们可以选择过滤掉这种“非法”的字符。我采用的方式是,在字符上面做操作,下面是Java示例代码,核心的代码附上,应该是 无法直接下载就能够编译,你得小小的做一些微调,没有额外的依赖:
01 public class EmojiFilter {
02
03 /**
04 * 检测是否有emoji字符
05 * @param source
06 * @return 一旦含有就抛出
07 */
08 public static boolean containsEmoji(String source) {
09 if (StringUtils.isBlank(source)) {
10 return false;
11 }
12
13 int len = source.length();
14
15 for (int i = 0; i < len; i++) {
16 char codePoint = source.charAt(i);
17
18 if (isEmojiCharacter(codePoint)) {
19 //do nothing,判断到了这里表明,确认有表情字符
20 return true;
21 }
22 }
23
24 return false;
25 }
26
27 private static boolean isEmojiCharacter(char codePoint) {
28 return (codePoint == 0x0) ||
29 (codePoint == 0x9) ||
30 (codePoint == 0xA) ||
31 (codePoint == 0xD) ||
32 ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) ||
33 ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) ||
34 ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));
35 }
36
37 /**
38 * 过滤emoji 或者 其他非文字类型的字符
39 * @param source
40 * @return
41 */
42 public static String filterEmoji(String source) {
43
44 if (!containsEmoji(source)) {
45 return source;//如果不包含,直接返回
46 }
47 //到这里铁定包含
48 StringBuilder buf = null;
49
50 int len = source.length();
51
52 for (int i = 0; i < len; i++) {
53 char codePoint = source.charAt(i);
54
55 if (isEmojiCharacter(codePoint)) {
56 if (buf == null) {
57 buf = new StringBuilder(source.length());
58 }
59
60 buf.append(codePoint);
61 } else {
62 }
63 }
64
65 if (buf == null) {
66 return source;//如果没有找到 emoji表情,则返回源字符串
67 } else {
68 if (buf.length() == len) {//这里的意义在于尽可能少的toString,因为会重新生成字符串
69 buf = null;
70 return source;
71 } else {
72 return buf.toString();
73 }
74 }
75
76 }
77 }
还有优化的空间,但是已经能够满足大多数情况的需求,附上单元测试(JUnit4):
01 public class EmojiFilterTest {
02
03
04 /**
05 * 测试emoji表情
06 */
07 @Test
08 public void fileterEmoji() {
09 String s = "<body>口口213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)!" +
10 "(@*$&@(&#!)@*)!&$!)@^%@(!&#. 口口口], ";
11 String c = Utils.filterEmoji(s);
12 assertFalse(s.equals(c));
13 String expected = "<body>213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)" +
14 "!(@*$&@(&#!)@*)!&$!)@^%@(!&#. ], ";
15 assertEquals(expected, c);
16 // assertSame(c, expected);
17 assertSame(expected, "<body>213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)" +
18 "!(@*$&@(&#!)@*)!&$!)@^%@(!&#. ], ");
19 assertSame(c, Utils.filterEmoji(c));
20 }
21
22 }

⑥ android中怎么过滤掉系统表情

解决方案

对于字符串处理,首选就是正则表达式去处理,而在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表情了

⑦ android 如何屏蔽emoji表情正则

不知道!我用的是苹果6!

⑧ 问:Android edittext 如何禁止输入笑脸,手等表情

AddTextWatcher,手动在里面判断一下吧

⑨ python 怎么过滤 emoji 表情符号


string =“你猜猜em[4500]48570em[2250]”
cc = re.findall('[\u4e00-\u9fa5]', string)
cc="你猜猜"
去提取中文或者英文不也可以达到去除表情符号的作用吗版?我用的反权向思维

⑩ Android应用中使用emoji表情的思路,我想用关键字替换成表情,但是手机输入的表情编码不知道

表情编码是自定义的,比如:
/wexiao 代表 微笑
/fennu 代表 愤怒
只要自己定义好就行,再使用SpannableString进行配合正则表达式进行替换,
具体操作你再网络一下,这只是思路.

阅读全文

与android过滤掉表情相关的资料

热点内容
地热循环泵静音家用能提升几度 浏览:917
污水处理设备处理完的水叫什么 浏览:748
生活污水池种什么最好 浏览:35
常州水处理环保有限公司怎么样 浏览:633
asf旁滤过滤器在循环水厂的使用论文 浏览:365
2012轩逸经典空调滤芯怎么换 浏览:260
长安污水处理原理是怎么来的 浏览:196
千里写过滤器 浏览:853
ro膜串联 浏览:348
吉利博瑞ge拆空气滤芯用什么工具 浏览:482
污水提升装置和潜污泵 浏览:675
磷肥生产废水处理 浏览:496
microboy提升泵 浏览:43
饮水机热水孔时好时坏怎么回事 浏览:983
女子被推下污水井事件怎么判 浏览:424
污水处理氧化沟电位多少 浏览:631
4040ro膜安装反了 浏览:68
人工湿地污水处理技术图 浏览:796
处理污水器为什么那么多波 浏览:213
k10净水器怎么样 浏览:452