16進(jìn)制 轉(zhuǎn)成 Emoji表情

鏈接:http://www.reibang.com/p/51deb78814e1
來源:簡書
著作權(quán)歸作者所有畏陕。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)横媚,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處考赛。

感謝作者提供酥泛!
Swift:

import Foundation

extension String{

func emojiStr() -> String {
    //1.在一段字符串中查找十六進(jìn)制的字符串
    let scanner = NSScanner(string: self)
    //2.將查找的字符串轉(zhuǎn)換為十六進(jìn)制的數(shù)字
    var value: UInt32 = 0
    scanner.scanHexInt(&value)
    //3.將十六進(jìn)制的數(shù)字轉(zhuǎn)化為 unicode字符
    let charCode = Character(UnicodeScalar(value))
    //4.將uniconde字符轉(zhuǎn)換 字符串

    return "\(charCode)"

}

}
Objective-C:

.h

import <Foundation/Foundation.h>

@interface NSString (Emoji)
/**

  • 將十六進(jìn)制的編碼轉(zhuǎn)為emoji字符
    */
  • (NSString *)emojiWithIntCode:(long)intCode;

/**

  • 將十六進(jìn)制的編碼轉(zhuǎn)為emoji字符
    */
  • (NSString *)emojiWithStringCode:(NSString *)stringCode;
  • (NSString *)emoji;

/**

  • 是否為emoji字符
    */
  • (BOOL)isEmoji;
    @end
    .m

import "NSString+Emoji.h"

define EmojiCodeToSymbol(c) ((((0x808080F0 | (c & 0x3F000) >> 4) | (c & 0xFC0) << 10) | (c & 0x1C0000) << 18) | (c & 0x3F) << 24)

@implementation NSString (Emoji)

  • (NSString *)emojiWithIntCode:(long)intCode {
    NSString * s = [NSString stringWithFormat:@"%ld",intCode];
    int symbol = EmojiCodeToSymbol([s intValue]);
    NSString *string = [[NSString alloc] initWithBytes:&symbol length:sizeof(symbol) encoding:NSUTF8StringEncoding];
    if (string == nil) { // 新版Emoji
    string = [NSString stringWithFormat:@"%C", (unichar)intCode];
    }
    return string;
    }
  • (NSString *)emoji
    {
    return [NSString emojiWithStringCode:self];
    }
  • (NSString *)emojiWithStringCode:(NSString *)stringCode
    {
    char *charCode = (char *)stringCode.UTF8String;
    long intCode = strtol(charCode, NULL, 16);
    return [self emojiWithIntCode:intCode];
    }

// 判斷是否是 emoji表情

  • (BOOL)isEmoji
    {
    BOOL returnValue = NO;

    const unichar hs = [self characterAtIndex:0];
    // surrogate pair
    if (0xd800 <= hs && hs <= 0xdbff) {
    if (self.length > 1) {
    const unichar ls = [self characterAtIndex:1];
    const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
    if (0x1d000 <= uc && uc <= 0x1f77f) {
    returnValue = YES;
    }
    }
    } else if (self.length > 1) {
    const unichar ls = [self characterAtIndex:1];
    if (ls == 0x20e3) {
    returnValue = YES;
    }
    } else {
    // non surrogate
    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;
    }
    @end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末今豆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子柔袁,更是在濱河造成了極大的恐慌呆躲,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捶索,死亡現(xiàn)場離奇詭異插掂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門辅甥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酝润,“玉大人,你說我怎么就攤上這事璃弄∫” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵夏块,是天一觀的道長疏咐。 經(jīng)常有香客問我,道長脐供,這世上最難降的妖魔是什么浑塞? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮患民,結(jié)果婚禮上缩举,老公的妹妹穿的比我還像新娘。我一直安慰自己匹颤,他們只是感情好仅孩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著印蓖,像睡著了一般辽慕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赦肃,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天溅蛉,我揣著相機(jī)與錄音,去河邊找鬼他宛。 笑死船侧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厅各。 我是一名探鬼主播镜撩,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼队塘!你這毒婦竟也來了袁梗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤憔古,失蹤者是張志新(化名)和其女友劉穎遮怜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸿市,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锯梁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年即碗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涝桅。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拜姿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冯遂,到底是詐尸還是另有隱情,我是刑警寧澤谒获,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布蛤肌,位于F島的核電站,受9級(jí)特大地震影響批狱,放射性物質(zhì)發(fā)生泄漏裸准。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一赔硫、第九天 我趴在偏房一處隱蔽的房頂上張望炒俱。 院中可真熱鬧,春花似錦爪膊、人聲如沸权悟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽峦阁。三九已至,卻和暖如春耘成,著一層夾襖步出監(jiān)牢的瞬間榔昔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國打工瘪菌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撒会,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓师妙,卻偏偏與公主長得像诵肛,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疆栏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • UITextView/UITextField檢測并過濾Emoji表情符號(hào) 本人在開發(fā)過程中遇到過這種情況曾掂,服務(wù)器端...
    蒲公英少年閱讀 6,512評(píng)論 3 19
  • z在項(xiàng)目中,要求用戶評(píng)論超過10行或者超過400字節(jié)顯示“...read more”類似微信的展開全文壁顶,這個(gè)功能已...
    zhanghengiOS閱讀 2,597評(píng)論 0 5
  • 由于編碼原因珠洗,在文本框中輸入“Emoji”表情的時(shí)候后臺(tái)返回異常數(shù)據(jù)。所以在前臺(tái)發(fā)送請(qǐng)求的時(shí)候直接過濾掉若专。 直接上...
    高談闊論閱讀 862評(píng)論 0 0
  • 如果項(xiàng)目中有評(píng)論或者信息恢復(fù)的地方许蓖,往往會(huì)用到emoji,有時(shí)候如后臺(tái)不支持emoji,就會(huì)顯示亂碼錯(cuò)誤膊爪,我們可以...
    々莫等閑々閱讀 3,949評(píng)論 1 1
  • 有多少人自阱,經(jīng)常在夜晚一個(gè)人躲在角落里,偷偷抱著自己哭米酬,然后第二天依舊嘻嘻哈哈的沛豌,假裝那些傷痛都不曾存在過。
    北七海閱讀 324評(píng)論 0 1