<small id='YveK8'></small><noframes id='YveK8'>

  • <legend id='YveK8'><style id='YveK8'><dir id='YveK8'><q id='YveK8'></q></dir></style></legend>

    1. <i id='YveK8'><tr id='YveK8'><dt id='YveK8'><q id='YveK8'><span id='YveK8'><b id='YveK8'><form id='YveK8'><ins id='YveK8'></ins><ul id='YveK8'></ul><sub id='YveK8'></sub></form><legend id='YveK8'></legend><bdo id='YveK8'><pre id='YveK8'><center id='YveK8'></center></pre></bdo></b><th id='YveK8'></th></span></q></dt></tr></i><div id='YveK8'><tfoot id='YveK8'></tfoot><dl id='YveK8'><fieldset id='YveK8'></fieldset></dl></div>

    2. <tfoot id='YveK8'></tfoot>
        <bdo id='YveK8'></bdo><ul id='YveK8'></ul>

        如何从 .NET 字符串中获取 Unicode 代码点数组?

        时间:2023-05-20

          <bdo id='fJejj'></bdo><ul id='fJejj'></ul>

            <small id='fJejj'></small><noframes id='fJejj'>

            <legend id='fJejj'><style id='fJejj'><dir id='fJejj'><q id='fJejj'></q></dir></style></legend>
              <tbody id='fJejj'></tbody>
                • <i id='fJejj'><tr id='fJejj'><dt id='fJejj'><q id='fJejj'><span id='fJejj'><b id='fJejj'><form id='fJejj'><ins id='fJejj'></ins><ul id='fJejj'></ul><sub id='fJejj'></sub></form><legend id='fJejj'></legend><bdo id='fJejj'><pre id='fJejj'><center id='fJejj'></center></pre></bdo></b><th id='fJejj'></th></span></q></dt></tr></i><div id='fJejj'><tfoot id='fJejj'></tfoot><dl id='fJejj'><fieldset id='fJejj'></fieldset></dl></div>
                  <tfoot id='fJejj'></tfoot>
                  本文介绍了如何从 .NET 字符串中获取 Unicode 代码点数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  我有一个字符范围限制列表,我需要检查一个字符串,但 .NET 中的 char 类型是 UTF-16,因此某些字符会变成古怪的(代理)对.因此,当枚举 string 中的所有 char 时,我没有得到 32 位 Unicode 代码点,并且一些高值比较失败.

                  I have a list of character range restrictions that I need to check a string against, but the char type in .NET is UTF-16 and therefore some characters become wacky (surrogate) pairs instead. Thus when enumerating all the char's in a string, I don't get the 32-bit Unicode code points and some comparisons with high values fail.

                  我对 Unicode 有足够的了解,如有必要,我可以自己解析字节,但我正在寻找 C#/.NET Framework BCL 解决方案.所以...

                  I understand Unicode well enough that I could parse the bytes myself if necessary, but I'm looking for a C#/.NET Framework BCL solution. So ...

                  如何将 string 转换为 32 位 Unicode 代码点的数组 (int[])?

                  How would you convert a string to an array (int[]) of 32-bit Unicode code points?

                  推荐答案

                  这个答案不正确.请参阅@Virtlink 的正确答案.

                  static int[] ExtractScalars(string s)
                  {
                    if (!s.IsNormalized())
                    {
                      s = s.Normalize();
                    }
                  
                    List<int> chars = new List<int>((s.Length * 3) / 2);
                  
                    var ee = StringInfo.GetTextElementEnumerator(s);
                  
                    while (ee.MoveNext())
                    {
                      string e = ee.GetTextElement();
                      chars.Add(char.ConvertToUtf32(e, 0));
                    }
                  
                    return chars.ToArray();
                  }
                  

                  注意事项:处理复合字符需要规范化.

                  Notes: Normalization is required to deal with composite characters.

                  这篇关于如何从 .NET 字符串中获取 Unicode 代码点数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何按字母顺序找出下一个字符? 下一篇:“字符文字错误中的字符过多"

                  相关文章

                • <tfoot id='0W0I8'></tfoot>
                  • <bdo id='0W0I8'></bdo><ul id='0W0I8'></ul>

                  <legend id='0W0I8'><style id='0W0I8'><dir id='0W0I8'><q id='0W0I8'></q></dir></style></legend>

                      <i id='0W0I8'><tr id='0W0I8'><dt id='0W0I8'><q id='0W0I8'><span id='0W0I8'><b id='0W0I8'><form id='0W0I8'><ins id='0W0I8'></ins><ul id='0W0I8'></ul><sub id='0W0I8'></sub></form><legend id='0W0I8'></legend><bdo id='0W0I8'><pre id='0W0I8'><center id='0W0I8'></center></pre></bdo></b><th id='0W0I8'></th></span></q></dt></tr></i><div id='0W0I8'><tfoot id='0W0I8'></tfoot><dl id='0W0I8'><fieldset id='0W0I8'></fieldset></dl></div>

                      <small id='0W0I8'></small><noframes id='0W0I8'>