C++ 判断字符是Emoji表情

本文介绍了一个用于检测文本中是否包含表情字符的算法。该算法通过分析Unicode编码来判断单个或连续两个字符是否为常见的表情符号,并返回相应的标识。文章详细展示了如何针对不同范围内的Unicode值进行判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


int IsEmojiChar(wchar_t _ch1, wchar_t _ch2)
{
	if ((0XD800 <= _ch1) && (_ch1 <= 0XDBFF))
	{
		UINT _tmp = ((_ch1 - 0XD800) * (UINT)0X400) + (_ch2 - 0XDC00) + (UINT)0X10000;
		if (0X1D00 <= _tmp && _tmp <= 0X1F77F)
		{
			return 2;
		}
	}
	else if (0X2100 <= _ch1 && _ch1 <= 0X27FF && _ch1 != 0X263B)
	{
		return 1;
	}
	else if (0X2B05 <= _ch1 && _ch1 <= 0X2B07) 
	{
		return 1;
	}
	else if (0X2934 <= _ch1 && _ch1 <= 0X2935) 
	{
		return 1;
	}
	else if (0X3297 <= _ch1 && _ch1 <= 0X3299) 
	{
		return 1;
	}
	else if (_ch1 == 0xa9 || _ch1 == 0xae || _ch1 == 0x303d || _ch1 == 0x3030 || _ch1 == 0x2b55 || _ch1 == 0x2b1c
		|| _ch1 == 0x2b1b || _ch1 == 0x2b50 || _ch1 == 0x231a) {
		return 1;
	}
	else if (_ch2 == 0x20e3)
	{
		return 2;
	}

	return 0;
}

返回0 说明不是表情,返回1 说明第一个字符是表情,返回2说明连续两个都是表情。如果返回2,第二个字符不需要再检查,下一次直接检查第三个字符.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值