將表情描述轉換成表情

@"{d83d}{de02}" 轉換成 ??

- (int)hex2dec:(NSString *)hex {
    int dec=0;
    int len = [hex length];
    int i;
    for(i=len-1;i>=0;i--) {
        unichar c = [hex characterAtIndex:i];
        if(c >= '0' && c <='9'){
            dec += (c-48)<<(4*(len-i-1));
        }else if(c >= 'A' && c <='F'){
            dec += (c-55)<<(4*(len-i-1));
        }else if(c >= 'a' && c <='f'){
            dec += (c-87)<<(4*(len-i-1));
        }
    }
    return dec;
}

/**
 * 將表情描述轉換成表情
 *
 * @param str
 * @return
 */
- (NSString*)getEmoji:(NSString*)str {
    
    NSString *string = str;
    NSString *strRegex = @"\\{(.*?)\\}";
    
    NSError *error = nil;
    //創建正則表達式對象
    NSRegularExpression *reg = [NSRegularExpression regularExpressionWithPattern:strRegex options:NSRegularExpressionCaseInsensitive|NSRegularExpressionDotMatchesLineSeparators error:&error];
    //無視大小寫.
    NSArray *matches = [reg matchesInString:string options:NSMatchingCompleted range:NSMakeRange(0, [string length])];
    
    NSString *originString = [string copy];
    for (NSTextCheckingResult *match in matches) {
        NSRange range = [match range];
        NSString *s1 = [originString substringWithRange:NSMakeRange(range.location, range.length)];
        NSString *s2 = [s1 substringWithRange:NSMakeRange(1, s1.length - 2)];
        NSString *s3;
        
        @try{
            s3 = [NSString stringWithFormat:@"%C", (unichar)[self hex2dec:s2]];
            
            NSLog(@"s1: %@", s1);
            NSLog(@"s2: %@", s2);
            NSLog(@"s3: %@", s3);
            
            string = [string stringByReplacingOccurrencesOfString:s1 withString:s3];
        } @catch(NSException *e) {
            NSLog(@"%@", e);
        }
    }
    
    return string;
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容