首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中比较和转换表情符号

如何在C#中比较和转换表情符号
EN

Stack Overflow用户
提问于 2015-10-02 03:12:56
回答 1查看 10K关注 0票数 7

我正在尝试弄清楚如何检查字符串是否包含特定的表情符号。举个例子,看看下面两个表情:

自行车手:http://unicode.org/emoji/charts/full-emoji-list.html#1f6b4

美国旗帜:http://unicode.org/emoji/charts/full-emoji-list.html#1f1fa_1f1f8

自行车手是U+1F6B4,美国国旗是U+1F1FA U+1F1F8

然而,要检查的表情符号是以这样的数组形式提供给我的,其中只包含字符串中的数值:

代码语言:javascript
复制
var checkFor = new string[] {"1F6B4","1F1FA-1F1F8"};

如何将这些数组值转换为实际的unicode字符,并检查字符串中是否包含这些字符?

我可以为自行车手找到一些有用的东西,但是对于美国国旗,我被难住了。

对于Bicyclist,我将执行以下操作:

代码语言:javascript
复制
const string comparisonStr = "..."; //some string containing text and emoji

var hexVal = Convert.ToInt32(checkFor[0], 16);
var strVal = Char.ConvertFromUtf32(hexVal);

//now I can successfully do the following check

var exists = comparisonStr.Contains(strVal);

但这不适用于US Flag,因为有多个代码点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-02 03:30:28

你已经克服了最难的部分。您所缺少的就是解析数组中的值,并在执行检查之前组合两个unicode字符。

下面是一个应该可以工作的示例程序:

代码语言:javascript
复制
static void Main(string[] args)
{
    const string comparisonStr = "bicyclist: \U0001F6B4, and US flag: \U0001F1FA\U0001F1F8"; //some string containing text and emoji
    var checkFor = new string[] { "1F6B4", "1F1FA-1F1F8" };

    foreach (var searchStringInHex in checkFor)
    {
        string searchString = string.Join(string.Empty, searchStringInHex.Split('-')
                                                        .Select(hex => char.ConvertFromUtf32(Convert.ToInt32(hex, 16))));

        if (comparisonStr.Contains(searchString))
        {
            Console.WriteLine($"Found {searchStringInHex}!");
        }
    }
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32895131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档