IOS開發中emoji表情如何判斷

2021-07-08 22:25:14 字數 1368 閱讀 3962

在ios開發中,很多時候我們要對textfield中的文字進行限制,包括有沒有空格,長度在哪個範圍裡面。不過,最近發現乙個問題,ios手機自帶的鍵盤裡面可以輸入一些emoji表情,而且這些表情在伺服器上根本不支援,這時候沒辦法只能控制使用者輸出了,那麼我們如何來判斷文字中是否含有emoji表情呢?

首先我為nsstring寫了乙個分類,在網上找了半天,發現大多數用的這個方法

@implementation

nsstring (emoji)

+ (bool)stringcontainsemoji:(nsstring *)string

}} else

if (substring.length > 1)

} else else

if (0x2b05

<= hs && hs <= 0x2b07) else

if (0x2934

<= hs && hs <= 0x2935) else

if (0x3297

<= hs && hs <= 0x3299) else

if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50)

}}];

return iseomji;

}

後來試了一下,這種方法不全面,雖然能判斷出一些emoji表情,但是還是有很多表情依然可以輸出,比如��就可以,還有⚽️,這些。

然後就在論壇發現了一種更全面的方法

+ (bool)stringcontainsemoji:(nsstring *)string

}} else else

if (0x2b05

<= hs && hs <= 0x2b07) else

if (0x2934

<= hs && hs <= 0x2935) else

if (0x3297

<= hs && hs <= 0x3299) else

if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50|| hs == 0x231a )

if (!iseomji && substring.length > 1) }}

}];return iseomji;

}

這下就ok了,這些牽涉到unicode,utf-8,utf-16知識,感興趣的朋友可以去研究一下。

iOS 過濾emoji表情

前言。bool stringcontainsemoji nsstring string else if substring.length 1 else else if 0x2b05 hs hs 0x2b07 else if 0x2934 hs hs 0x2935 else if 0x3297 hs ...

iOS 獲取emoji表情和攔截emoji表情

12 將數字轉為 define emoji code to symbol x 0x808080f0 x 0x3f000 4 x 0xfc0 10 x 0x1c0000 18 x 0x3f 24 12 3456 78910 1112 1314 void viewdidload 12 3456 7891...

mysql支援IOS的Emoji表情

原因 utf 8編碼有可能是兩個 三個 四個位元組。emoji表情是4個位元組,而mysql的utf8編碼最多3個位元組,所以資料插不進去。解決辦法 將mysql的編碼從utf8轉換成utf8mb4 步驟 1.修改mysql配置檔案 my.ini default character set utf8...