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

时间:2015-04-24 04:17:58

标签: c# string unicode utf-16 surrogate-pairs

我们已经有a question about getting the first 16-bit char of a string

这包括问题代码:

MyString.ToCharArray[0]

并接受答案代码:

MyString[0]

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

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

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

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

2 个答案:

答案 0 :(得分:5)

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

        var yourstring = "test"; // First char is multibyte char.
        var firstCharOfString = StringInfo.GetNextTextElement(yourstring,0);

答案 1 :(得分:0)

使用此:

str = str.Substring(0, 1);

str[0];

str.FirstOrDefault();
相关问题