过滤NSString中的Emoji

有时候由于项目需求。要过滤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

本文原创。转载请注明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值