有时候由于项目需求。要过滤NSString中的emoji。

比方下面情况:

  • 要跟android互通,android假设还没做这方面的支持。
  • 内容做为手机短信发出去。

思路例如以下,遍历NSString每个字符,然后替换成其他字符。打印每个字符:

NSRange range;
for(NSInteger i = 0; i < length; i += range.length) {
range = [string rangeOfComposedCharacterSequenceAtIndex:i];
NSString *composedString = [string substringWithRange:range];
NSLog(@"i = %@, ch = %@", @(i), composedString);
}`

怎样推断composedString是emoji呢?

  • 方法1:查找其在emoji字典里。这种方法要载入全面的emoji,不是非常理想。
  • 方法2:是不是正常能显示的字符,就是它是非emoji。

推断当前码点是不是emoji.

- (BOOL)isNotEmoji:(UInt64) codePoint {
return (codePoint == 0x0)
|| (codePoint == 0x9)
|| (codePoint == 0xA)
|| (codePoint == 0xD)
|| ((codePoint >= 0x20) && (codePoint <= 0xD7FF))
|| ((codePoint >= 0xFF00) && (codePoint <=
0xFFFF));
}

依据以上两个方法,我写了一个NSString的扩展类:

NSString+YFEmoji

本文原创。转载请注明。

最新文章

  1. show master/slave status求根溯源
  2. poj3461 Oulipo(KMP模板)
  3. extJs学习基础 容器的介绍
  4. dedecms无法创建rss文件,提示DedeTag Engine Create File False
  5. 阅读jQuery源码的18个惊喜
  6. Restful api测试插件Swagger-UI
  7. Android_ViewPager
  8. HDU 3265 Posters ——(线段树+扫描线)
  9. 使用阿里百川HotFix
  10. 在 ServiceModel 客户端配置部分中,找不到引用协定“XX”的默认终结点元素的解决方法
  11. 814-Binary Tree Pruning
  12. 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理
  13. css 修改svg图标的颜色(不修改fill)
  14. percona-5.7二进制多实例安装
  15. Java常用测试工具
  16. 解决双系统(Window10+Ubuntu16.10)下ubuntu安装git时提示软件包git没有可安装候选问题
  17. C# 日志系统 log4net 配置及使用
  18. nginx 场景业务汇总 (初)
  19. python+selenium实现动态爬取及selenuim的常用操作
  20. SQL条件!=null查不出数据

热门文章

  1. MongoError: topology was destroyed解决方法
  2. CodeForces - 283E Cow Tennis Tournament
  3. 【AC自动机】zoj3228 Searching the String
  4. 【分块打表】Gym - 100923K - Por Costel and the Firecracker
  5. 【分块答案】【最小割】bzoj1532 [POI2005]Kos-Dicing
  6. css sprite demo
  7. SSH学习——Spring基础
  8. C#Windows服务:一些方法(启动、停止等)
  9. linux-内存使用-free
  10. 论文中的state-of-the-art