用net匹配并替换iOS标准的emoji表情符号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用net匹配并替换iOS标准的emoji表情符号相关的知识,希望对你有一定的参考价值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespaceCommon
{
    public static class EmojiFilter
    {
        /**
          * 检测是否有emoji字符
          * @param source
          * @return 一旦含有就抛出
          */
        public static Boolean containsEmoji(String source)
        {
            char[] item = source.ToCharArray();
            for (int i = 0; i < source.Length; i++)
            {
                if (isEmojiCharacter(item[i]))
                    return true; //do nothing,判断到了这里表明,确认有表情字符
            }
            return false;
        }
        private static Boolean isEmojiCharacter(char codePoint)
        {
            return (codePoint == 0x0) ||
                    (codePoint == 0x9) ||
                    (codePoint == 0xA) ||
                    (codePoint == 0xD) ||
                    ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) ||
                    ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) ||
                    ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));
        }
        /**
         * 过滤emoji 或者 其他非文字类型的字符
         * @param source
         * @return
         */
        public static String filterEmoji(String source)
        {
            if (!containsEmoji(source))
                return source;//如果不包含,直接返回
            //到这里铁定包含
            StringBuilder buf = null;
            char[] item = source.ToCharArray();
            for (int i = 0; i < source.Length; i++)
            {
                char codePoint = item[i];
                if (isEmojiCharacter(codePoint))
                {
                    if (buf == null)
                        buf = new StringBuilder(source.Length);
                    buf.Append(codePoint);
                }
            }
            if (buf == null)
                return source;//如果没有找到 emoji表情,则返回源字符串
            else
            {
                if (buf.Length == source.Length)
                {
                    buf = null;//这里的意义在于尽可能少的toString,因为会重新生成字符串
                    return source;
                }
                else
                    return buf.ToString();
            }

        }
    }
}

  

以上是关于用net匹配并替换iOS标准的emoji表情符号的主要内容,如果未能解决你的问题,请参考以下文章

C# 正则表达式匹配表情符号

如何让应用程序支持emoji

用 Python 开发 emoji 表情查找程序

为啥我手机在空间里发了emoji表情 却显示符号 该怎么弄

新的emoji表情只有iPhone机有么?安卓机能用么

响应苹果号召:谷歌Android P将把手枪emoji表情换成“水枪”