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

MyString.ToCharArray[0]

当前回答

从c# 8.0+开始,我们可以使用范围索引器语法。

以下代码:

var name = "Dotnet".Substring(0, 1)

可以使用range语法编写:

var name = "Dotnet"[..1]

尝试在Dotnet小提琴

更多示例请参见官方文档

如果输入字符串小于range index,上面的代码将抛出。这个LINQ可以防止这个问题:

var name = "Dotnet".Take(1).ToArray()

尝试在Dotnet小提琴

其他回答

这是另一种方法:

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

或者你可以这样做:

MyString[0];

MyString[0]和MyString.ToCharArray()[0]之间的区别是前者将字符串视为只读数组,而ToCharArray()创建一个新数组。前者在几乎任何情况下都更快(也更简单),但如果您有一个需要接受数组的方法,或者如果您想更改数组,则可能需要ToCharArray。

如果字符串不是非空或非空的,你可以这样做:

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

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

从c# 8.0+开始,我们可以使用范围索引器语法。

以下代码:

var name = "Dotnet".Substring(0, 1)

可以使用range语法编写:

var name = "Dotnet"[..1]

尝试在Dotnet小提琴

更多示例请参见官方文档

如果输入字符串小于range index,上面的代码将抛出。这个LINQ可以防止这个问题:

var name = "Dotnet".Take(1).ToArray()

尝试在Dotnet小提琴

从字符串中获取字符可能取决于编码(字符串默认为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);