Tag: astral plane

C#正则表达式,模式中带有\ Uxxxxxxxx字符

Regex.IsMatch( “foo”, “[\U00010000-\U0010FFFF]” ) 抛出:System.ArgumentException:以相反的顺序解析“[ – ]” – [xy]范围。 查看\ U00010000和\ U0​​010FFF的hex值我得到:第一个字符为0xd800 0xdc00,第二个字符为0xdbff 0xdfff。 所以我想我确实有一个问题。 为什么用\ U形成的Unicode字符在字符串中分成两个字符?

您如何从.NET字符串中获取一系列Unicode代码点?

我有一个字符范围限制列表,我需要检查字符串,但.NET中的char类型是UTF-16,因此一些字符变为古怪(代理)对。 因此,当枚举string所有char时,我不会获得32位Unicode代码点,并且某些与高值的比较会失败。 我非常了解Unicode,如果有必要,我可以自己解析字节,但我正在寻找一个C#/ .NET Framework BCL解决方案。 所以…… 如何将string转换为32位Unicode代码点的数组( int[] )?