判断字符串中是否含有表情符号

- (BOOL)df_containsEmoji
{
    if ([self df_isFuckEmoji]) {
        return YES;
    }
    const unichar high = [self characterAtIndex:0];
    
    
    // Surrogate pair (U+1D000-1F77F)
    if (0xd800 <= high && high <= 0xdbff) {
        const unichar low = [self characterAtIndex: 1];
        const int codepoint = ((high - 0xd800) * 0x400) + (low - 0xdc00) + 0x10000;
        
        return (0x1d000 <= codepoint && codepoint <= 0x1f77f);
        
        // Not surrogate pair (U+2100-27BF)
    } else {
        return (0x2100 <= high && high <= 0x27bf);
    }
    //
}

- (BOOL)df_isFuckEmoji
{
    NSArray *digs = @[@"0️⃣",@"1️⃣",@"2️⃣",@"3️⃣",@"4️⃣",@"5️⃣",@"6️⃣",@"7️⃣",@"8️⃣",@"9️⃣",@"#️⃣",@"*️⃣",@"#⃣️",@"*️⃣",@"0⃣️",@"1⃣️",@"2⃣️",@"3⃣️",@"4⃣️",@"5⃣️",@"6⃣️",@"7⃣️",@"8⃣️",@"9⃣️"] ;
    
    if([digs containsObject:self]){
        return YES;
    }
    
    NSString *emoji = @"🤣🤑🤗🤓🤡🤠🤤🤔🤥🤐🤢🤧🤒🤕🤖🤝🤛🤜🤞🤘🤚🤙🤳🤶🤴🤵🤰🤦‍♀️🤦‍♂️🤷‍♀️🤷‍♂️🤛🏻🤜🏻🤞🏻🤘🏻🤚🏻🤙🏻🤳🏻🤶🏻🤴🏻🤵🏻🤰🏻🤦🏻‍♀️🤦🏻‍♂️🤷🏻‍♀️🤷🏻‍♂️🤸🏻‍♀️🤸🏻‍♂️🤾🏻‍♀️🤾🏻‍♂️🤽🏻‍♀️🤽🏻‍♂️🤹🏻‍♀️🤹🏻‍♂️🤛🏼🤜🏼🤞🏼🤘🏼🤚🏼🤙🏼🤳🏼🤶🏼🤴🏼🤵🏼🤰🏼🤦🏼‍♀️🤦🏼‍♂️🤷🏼‍♀️🤷🏼‍♂️🤸🏼‍♀️🤸🏼‍♂️🤾🏼‍♀️🤾🏼‍♂️🤽🏼‍♀️🤽🏼‍♂️🤹🏼‍♀️🤹🏼‍♂️🤛🏽🤜🏽🤞🏽🤘🏽🤚🏽🤙🏽🤳🏽🤶🏽🤴🏽🤵🏽🤰🏽🤦🏽‍♀️🤦🏽‍♂️🤷🏽‍♀️🤷🏽‍♂️🤸🏽‍♀️🤸🏽‍♂️🤾🏽‍♀️🤾🏽‍♂️🤽🏽‍♀️🤽🏽‍♂️🤹🏽‍♀️🤹🏽‍♂️🤛🏾🤜🏾🤞🏾🤘🏾🤚🏾🤙🏾🤳🏾🤶🏾🤴🏾🤵🏾🤰🏾🤦🏾‍♀️🤦🏾‍♂️🤷🏾‍♀️🤷🏾‍♂️🤸🏾‍♀️🤸🏾‍♂️🤾🏾‍♀️🤾🏾‍♂️🤽🏾‍♀️🤽🏾‍♂️🤹🏾‍♀️🤹🏾‍♂️🤛🏿🤜🏿🤞🏿🤘🏿🤚🏿🤙🏿🤳🏿🤶🏿🤴🏿🤵🏿🤰🏿🤦🏿‍♀️🤦🏿‍♂️🤷🏿‍♀️🤷🏿‍♂️🤸🏿‍♀️🤸🏿‍♂️🤾🏿‍♀️🤾🏿‍♂️🤽🏿‍♀️🤽🏿‍♂️🤹🏿‍♀️🤹🏿‍♂️🦊🦁🦆🦅🦉🦇🦄🦋🦎🦂🦀🦑🦐🦈🦌🦏🦍🦃🥀⭐️🥝🥑🥒🥕🥔🥜🥐🥖🧀🥚🥓🥞🥙🥗🥘🥛🥂🥃🥄🥅🥊🥋🤺🤼‍♀️🤼‍♂️🤸‍♀️🤸‍♂️🤾‍♀️🤾‍♂️🤽‍♀️🤽‍♂️🥇🥈🥉🤹‍♀️🤹‍♂️🥁㊙️㊗️⭕️‼️⁉️〽️⬅️⬆️⬇️⤴️⤵️©️®️〰️⬛️⬜️🤣🤠🤡🤥🤤🤢🤧🤴🤶🤵🤷🤦🤰🤳🤞🤙🤛🤜🤚🤝🦍🦊🦌🦏🦇🦅🦆🦉🦎🦈🦐🦑🦋🥀🥝🥑🥔🥕🥒🥜🥐🥖🥞🥓🥙🥚🥘🥗🥛🥂🥃🥄🥇🥈🥉🥊🥋🤸🤼🤽🤾🤺🥅🤹🥁‼️©️®️⁉️⤴️⤵️⬆️⬇️⬅️⭐⬛⬜⭕⟹ツღ";
    for (int i=0; i<[emoji length]; i++) {
        const unichar  ch=  [emoji characterAtIndex:i];
        if ([self characterAtIndex:0] == ch) {
            return  YES;
            break;
        }
    }
    
    return NO;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值