導航:首頁 > 凈水問答 > 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過濾掉表情相關的資料

熱點內容
污水提升泵里水池叫什麼池 瀏覽:599
河道排廢污水怎麼處理 瀏覽:444
污水檢測都檢測那些成分 瀏覽:148
內蒙古活性炭過濾罐 瀏覽:11
18款帝豪空氣濾芯在哪裡購買 瀏覽:620
油煙凈化器怎麼關掉 瀏覽:872
雨水管道和污水管道折舊年限 瀏覽:703
廢水our 瀏覽:272
座便提升器一體機 瀏覽:797
飲水機按什麼折舊 瀏覽:55
廣東化工樹脂招聘 瀏覽:488
科威凈水器怎麼清洗 瀏覽:468
樹脂濾鏡能放後備箱嗎 瀏覽:763
反滲透膜余氯損壞後怎麼恢復 瀏覽:588
反滲透膜單元檢測報告 瀏覽:265
中空纖維超濾膜的安裝壓力要求 瀏覽:895
博迪煙塵凈化器怎麼樣 瀏覽:468
脫硝污水處理 瀏覽:149
印染廠中水回用標准 瀏覽:72
污水脫硫可以用石灰 瀏覽:393