C#:如何获取字符串的第一个字符?

hip*_*ail 1 c# string unicode utf-16 surrogate-pairs

我们已经有一个关于获取char字符串的第一个16位的问题.

这包括问题代码:

MyString.ToCharArray[0]
Run Code Online (Sandbox Code Playgroud)

并接受答案代码:

MyString[0]
Run Code Online (Sandbox Code Playgroud)

我想有一些用途,但是当字符串包含文本时,我们希望所有人都知道单个16位字符不能容纳一个字符,即使在我们实际意味着"codepoint"的限制意义上.

我是程序员,但不是C#程序员.我只是想帮助在线同事修复这样的错误,以防你认为这是一个太基本的问题.

因此,如果我们在char数组中使用C#中的字符串,以正确的UTF-16编码,可能包括代理对作为第一个字符/代码点,因此可能包含两个chars,我如何获得第一个字符?

(我天真地假设Microsoft为此提供了一个字符串函数,我不必手动检查代理项对.)

Sam*_*eer 5

您可以使用 知道代理对和多字节字符的StringInfo类.

        var yourstring = "test"; // First char is multibyte char.
        var firstCharOfString = StringInfo.GetNextTextElement(yourstring,0);
Run Code Online (Sandbox Code Playgroud)