我们已经有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为此提供了一个字符串函数,我不必手动检查代理项对。)
答案 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();