美文网首页iOS基础·OC语法篇杏仁丶的iOS学习专题iOS 项目实战相关的教程
[iOS]检测字符串中是否包含emoji表情(包含iOS9之后的

[iOS]检测字符串中是否包含emoji表情(包含iOS9之后的

作者: 土b兰博王 | 来源:发表于2016-03-18 15:54 被阅读3876次

有时候在开发时会遇到不希望字符串中包含emoji表情的情况,Google之后发现了方法,但是似乎iOS9之后的emoji无法过滤,于是继续寻找方法,在一个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 high = [substring characterAtIndex: 0];
                                
                                // Surrogate pair (U+1D000-1F9FF)
                                if (0xD800 <= high && high <= 0xDBFF) {
                                    const unichar low = [substring characterAtIndex: 1];
                                    const int codepoint = ((high - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
                                    
                                    if (0x1D000 <= codepoint && codepoint <= 0x1F9FF){
                                        returnValue = YES;
                                    }
                                    
                                    // Not surrogate pair (U+2100-27BF)
                                } else {
                                    if (0x2100 <= high && high <= 0x27BF){
                                        returnValue = YES;
                                    }
                                }
                            }];
    
    return returnValue;
}

ps:扩展的链接是https://github.com/woxtu/NSString-RemoveEmoji 感谢作者

相关文章

网友评论

  • kongkk:这个判断还是有问题,当键盘输入切换为系统的九宫格时,输入的都会判断为表情。
  • 萌萌萌萌萌萌吗:还是有一些无法判断 我的是百度输入法然后是输入❤️和⚽️的时候检测不出来 ,也不知道其他会不会,又不想一个一个试。。
  • 洁简:还是有个别无法判断如㊙️㊗️
    新_1740:嗯,我现在也看了
    洁简:@新_1740 没有处理 如果想处理可以把所有的表情弄成一个字符串 然后判断 参考NSString-RemoveEmoji
    新_1740:是的,你解决了吗
  • 宋唐不送糖:方法不错,解决了有些表情无法判断的问题:+1:
  • GOOGxu:歪瑞古德

本文标题:[iOS]检测字符串中是否包含emoji表情(包含iOS9之后的

本文链接:https://www.haomeiwen.com/subject/evxhlttx.html