我有一个 C# 方法需要检索字符串的第一个字符,并查看它是否存在于包含特定 unicode 字符(所有从右到左字符)的 HashSet 中。
所以我在做
var c = str[0];
然后检查哈希集。
问题是此代码不适用于第一个字符的代码点大于 65535 的字符串。
我实际上创建了一个循环,遍历从 0 到 70,000 的所有数字(最高 RTL 代码点约为 68,000,所以我四舍五入),我从数字创建一个字节数组,并使用
Encoding.UTF32.GetString(intValue);
用这个字符创建一个字符串。然后我将它传递给在 HashSet 中搜索的方法,该方法失败,因为当它获取
str[0]
这个价值永远不是它应该的样子。
我究竟做错了什么?