将表情描述转换成表情

@"{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;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容