iOS中判斷Emoji表情問題_IOS

來源:互聯網
上載者:User

先給大家說下問題描述

伺服器端不支援Emoji表情,因此用戶端在上傳使用者輸入時,不能包含Emoji表情。

解決方案

在用戶端發送請求前,判斷使用者輸入中是否含有表情,如果含有表情,則提示使用者重新輸入。這個過程關鍵是如何判斷字串中是否含有Emoji表情。要判斷是否含有Emoji表情,必須先瞭解什麼是Emoji。

Emoji 是一套起源於日本的12x12像素Emoji,由栗田穣崇(Shigetaka Kurit)創作,最早在日本網路及手機使用者中流行,自蘋果公司發布的iOS 5IME中加入了emoji後,這種Emoji開始席捲全球,目前emoji已被大多數現代電腦系統所相容的Unicode編碼採納,普遍應用於各種手機簡訊和社交網路中。

以上是摘自百度百科裡的一段話,Emoji表情最終會被編碼成Unicode,因此,只要知道Emoji表情的Unicode編碼的範圍,就可以判斷使用者是否輸入了Emoji表情。以下是具體代碼,我這裡寫成了NSString的一個分類

@implementation NSString (Emoji)+ (BOOL)stringContainsEmoji:(NSString *)string{__block BOOL returnValue = NO;[string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {const unichar hs = [substring characterAtIndex:0];if (0xd800 <= hs && hs <= 0xdbff) {if (substring.length > 1) {const unichar ls = [substring characterAtIndex:1];const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;if (0x1d000 <= uc && uc <= 0x1f77f) {returnValue = YES;}}} else if (substring.length > 1) {const unichar ls = [substring characterAtIndex:1];if (ls == 0x20e3) {returnValue = YES;}} else {if (0x2100 <= hs && hs <= 0x27ff) {returnValue = YES;} else if (0x2B05 <= hs && hs <= 0x2b07) {returnValue = YES;} else if (0x2934 <= hs && hs <= 0x2935) {returnValue = YES;} else if (0x3297 <= hs && hs <= 0x3299) {returnValue = YES;} else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {returnValue = YES;}}}];return returnValue;}

本段代碼親測管用,歡迎大家參考。

以上所述是小編給大家介紹的iOS中判斷Emoji表情問題,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對雲棲社區網站的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.