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

227

通过如下方式可以获取字符串的第一个字符吗?

MyString.ToCharArray[0]

4
你尝试过后,学到了什么? - Michael Petrotta
1
@Michael:编译器出错了。如果不是这样,你应该如何使用ToCharArray? - Craig Johnston
3
记录一下,“ToCharArray”是一个方法,您应该首先运行它,例如char[] chars = str.ToCharArray();,然后使用char first = chars[0];。您也可以将其简化为str.ToCharArray()[0];。无论哪种方式,都要确保检查字符串不为空且至少有一个字符-您可以使用if(!String.IsNullOrEmpty(str))来进行检查。 - Kobi
1
Craig,ToCharArray 的使用方法不正确。请看我的回答。 - Nayan
5
你需要第一个字符(char)还是第一个字符(character)?如果你尝试这个并且看起来有效,再试试或者, 这两个在我使用的一个用C#编写的程序中失败了,出现了这个确切的错误。 - hippietrail
1
@hippietrail - 谢谢,这让我开始阅读了解C#是否有任何特殊的内置函数来处理Unicode复杂性。据我所见,首先需要使用指定的规范化形式调用String.Normalize,使字符串更容易分析,然后编写自定义代码来提取每个Unicode代码点,并确定哪些代码点是字符的起始点,哪些是添加变音符号或其他控制目的的代码点。还发现https://dev59.com/w18d5IYBdhLWcg3wTQsn#26977869提到了概念**字符**的一些微妙之处。 - ToolmakerSteve
15个回答

455

68

Mystring[0]应该足够了。


63
“应该花那额外的五秒钟打出“应该足够”的话。” - Robert Harvey
谁先回答了这个问题? - Craig Johnston
选择最老的选项卡以查看它是否为Matthew。 - johnc
16
或者更好的方法是将鼠标悬停在时间戳上。 - Jeff Mercado

43

尝试这样做:

string s1="good"; string s=s1.Substring(0,1);


13
与被选答案不同之处在于,这个解决方案返回一个字符串,而另一个则返回一个字符。 - Loïc Lopes
char 只能获取一个字符,但我的解决方案可以返回多个结果,如果你需要的话。 - Sanjay Kumaar
1
这只是一个精度问题,根据您想要做什么,类型可能很重要。 - Loïc Lopes
你可能想要检查字符串长度不为0。 - Dmitry S.

27

您可以使用LINQ

char c = mystring.FirstOrDefault()

如果字符串为空,它将等于'\0'


22
MyString[0]MyString.ToCharArray()[0] 的区别在于前者将字符串视为只读数组,而后者则创建一个新的数组。前者在大多数情况下都更快(也更容易),但如果你需要一个方法来接受数组或者想改变数组时,ToCharArray() 是必须的。如果不知道该字符串是否为非空字符串,可以这样做:
string.IsNullOrEmpty(MyString) ? (char?)null : MyString[0]

该函数返回一个char?,如果适用,则为null或字符串中的第一个字符。


感谢您提到char?作为一种包含“没有第一个字符”的可能性的方式。 - ToolmakerSteve

12

另一种方法:

string mystr = "hello";
MessageBox.show(mystr.Substring(0, 1));

11

或者你可以这样做:

MyString[0];

6
@Robert,不,我想再看一次,只是为了确认一下! - jjnguy
1
我只是没有看到在我之前的那些 :) - james_bond
1
没关系,我也经常这样做。我打字速度很慢。 - jjnguy

10

6
我认为你正在寻找这个 MyString.ToCharArray()[0]
但是你也可以使用 MyString[0]

3

以下示例可以帮助某人获取字符串的第一个字符

string anyNameForString = "" + stringVariableName[0];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接