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


177

可以char通过执行以下操作来检索字符串的第一个吗?

MyString.ToCharArray[0]

4
尝试时学到了什么?
Michael Petrotta 2010年

1
@Michael:出现编译器错误。如果不是这样,您打算如何使用ToCharArray?
Craig Johnston

3
为了记录在案,ToCharArray是一种方法,你应该首先运行它,例如char[] chars = str.ToCharArray();,然后使用char first = chars[0];。您也可以将其屠宰str.ToCharArray()[0];。无论哪种方式,请确保您检查字符串不为null且具有至少一个字符-您可以使用进行操作if(!String.IsNullOrEmpty(str))
科比

1
Craig .. ToCharArray的用法是错误的。看我的答案。
纳扬

4
您要第一个char还是第一个字符?如果您尝试执行此操作,并且似乎可以正常工作,请使用𣊾或重试一次𣇞,这两个错误均在我正在使用的程序中以C#编写,并带有此确切的错误。
hippietrail 2015年

Answers:




21

试试这个,

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


6
此答案与所选答案之间的区别在于,此解决方案返回一个字符串,而另一个返回一个char。
卢瓦克·洛佩斯

char仅获得一个字符,但是如果您愿意,我的解决方案可以得到不止一个字符。
桑杰·库玛

1
这只是一种精度,因为根据您要使用的类型,类型可能很重要。
卢瓦克Lopes的

18

MyString[0]和之间的区别在于,MyString.ToCharArray()[0]前者将字符串视为只读数组,而ToCharArray()创建新数组。前者几乎ToCharArray可以在任何可以使用的地方更快(以及更轻松),但是如果您有一个需要接受数组的方法,或者想要更改数组,则前者可能是必需的。

如果不知道该字符串为非null和非空,则可以执行以下操作:

string.IsNullOrEmpty(MyString) ? (char?)null : MyString[0]

视情况返回char?null或字符串中的第一个字符。


感谢您提及char?将“没有第一个字符”的可能性包括在内。
ToolmakerSteve

17

您可以使用LINQ

char c = mystring.FirstOrDefault()

'\0'如果该字符串为空,则等于。



8

只是另一种方法:

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

5

我想你在找这个 MyString.ToCharArray()[0]

:)

但是您也可以使用MyString[0]




0

您的问题的答案为否。

正确的是MyString [字符位置]。对于您的情况MyString [0],0是任何字符串的第一个字符。

字符值用'(单引号)指定,例如x字符值写为'x'。

字符串值用“(双引号)指定,就像x字符串值写为” x“一样。

所以Substring()方法也不返回字符,Substring()方法返回字符串!!!

字符串是字符数组,最后一个字符必须为'\ 0'(空)字符。多数民众赞成在字符数组和字符串之间的区别(这是一个字符数组,最后一个字符为“字符串结尾标记”'\ 0'null。

还要注意,“ x”不等于“ x”。因为“ x”实际上是“ x” +“ \ 0”。


0

在C#8中,您可以使用范围。

myString[0..Math.Min(myString.Length, 1)]

添加一个?after myString以处理null字符串。


-2

从字符串获取字符可能取决于以下内容(字符串默认为UTF-16)

https://stackoverflow.com/a/32141891

string str = new String(new char[] { '\uD800', '\uDC00', 'z' });
string first = str.Substring(0, char.IsHighSurrogate(str[0]) ? 2 : 1);

2
这个答案如何?
Nilesh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.