博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
禁止输入法联想输入表情
阅读量:6418 次
发布时间:2019-06-23

本文共 2011 字,大约阅读时间需要 6 分钟。

hot3.png

- (BOOL)hasEmoji:(NSString*)string{    NSString *pattern = @"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]";    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];    BOOL isMatch = [pred evaluateWithObject:string];    return isMatch;    }/** * 判断字符串中是否存在emoji * @param string 字符串 * @return YES(含有表情) */- (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];        // surrogate pair        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 {            // 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;    }

 

转载于:https://my.oschina.net/u/2418271/blog/1647065

你可能感兴趣的文章
特征选择
查看>>
在Winform程序中设置管理员权限及为用户组添加写入权限
查看>>
RTMP直播到FMS中的AAC音频直播
查看>>
多能互补提速 加快我国能源转型和现代能源体系建设
查看>>
《JavaScript设计模式》——2.5 多种调用方式——多态
查看>>
Redis开发运维实践高可用和集群架构与实践(二)
查看>>
程序员的常见“谎话”:对,这是一个已知 Bug
查看>>
如何侦查SQL执行状态
查看>>
CentOS 7 命令行如何连接无线网络
查看>>
Ubuntu 12.04上享用新版本Linux的功能
查看>>
logstash + grok 正则语法
查看>>
Zimbra开源版(v8.6)安装说明
查看>>
Android性能优化之TraceView和Lint使用详解
查看>>
基于pgrouting的路径规划之一
查看>>
LBS核心技术解析
查看>>
Fible Channel over Convergence Enhanced Ethernet talk about
查看>>
讨论:今日头条适配方案使用中出现的问题
查看>>
CSS3 3D翻转动画
查看>>
要命啦!Word中快速录入大全,内含快捷键小技巧,快来一起学习!
查看>>
javascript实现音频mp3播放
查看>>