c# - 如何将这样的 U+1F61A Unicode 字符串转换为 0x1F600
问题描述
我的代码就是这样
private IEnumerable<int> CombineSurrogates(string value)
{
if (null == value)
{
yield break; // or throw new ArgumentNullException(name(value));
}
for (int i = 0; i < value.Length; ++i)
{
char current = value[i];
char next = i < value.Length - 1 ? value[i + 1] : '\0';
if (char.IsSurrogatePair(current, next))
{
yield return char.ConvertToUtf32(current, next);
i += 1;
}
else
{
yield return current;
}
}
}
private string DecodeEncodedNonAsciiCharacters(string value)
{
return string.Join(" ", CombineSurrogates(value).Select(code => $"U+{code:X4}"));
}
string dn = DecodeEncodedNonAsciiCharacters("");
Console.WriteLine(dn);
它返回 U+1F61A,所以我需要帮助编写一个将 U+1F61A 转换为 0x1F600 的函数。所以我可以为我可用的其他表情符号执行此操作。
因为我正在使用名为 NetUnicodeInfo 的第三方 dll 来获取表情符号的名称。
private string PrintCodePointInfo(int codePoint)
{
var charInfo = UnicodeInfo.GetCharInfo(codePoint);
return charInfo.Name ?? charInfo.OldName;
}
PrintCodePointInfo(0x1F600);
因为 codePoint 是一个 int,所以我需要将 U+1F61A 转换为 0x1F600。
解决方案
你应该这样做
return string.Join(" ", CombineSurrogates(value).Select(code => $"0x{code:X4}"));
推荐阅读
- python - 值错误: int() 的无效文字无效文字,基数为 10:3,5
- curl - Kafka Connect REST 请求中出现意外字符
- openshift - Openshift 路由与外部负载均衡器
- angularjs - 从 Angular js 升级到 Angular 8 的指令
- python - 修改二分查找功能
- python - Python Pandas Groupby NaN 在列中应该具有相同的值
- sql - 使用 sum 时避免使用 group by
- go - 在 Golang 切片中偏移零索引
- firebase - 在没有 onSnapshot React-Native 的情况下从 firebase 中提取图像
- node.js - 如何使用 Node.JS 从 JSON 对象中检索特定字段?