4

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

这包括问题代码:

MyString.ToCharArray[0]

并接受答案代码:

MyString[0]

我想这有一些用途,但是当字符串包含文本时,我们希望我们都知道单个 16 位字符不能容纳一个字符,即使在我们实际上指的是“代码点”的有限意义上也是如此。

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

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

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

4

2 回答 2

8

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

        var yourstring = "test"; // First char is multibyte char.
        var firstCharOfString = StringInfo.GetNextTextElement(yourstring,0);
于 2015-04-24T04:25:39.683 回答
2

用这个:

str = str.Substring(0, 1);

或者

str[0];

或者

str.FirstOrDefault();
于 2015-04-24T04:20:41.140 回答