如何获取字符串中的第一个字母?

3

我正在处理一个实体(员工),它有3个字段:FirstName,LastName和Login。

我想获取lastname和firstname字段的第一个字母,并将其写入login字段。如何获取firstname字段的第一个字母?

谢谢任何帮助。

5个回答

4

就像这样简单:

if (!string.IsNullOrEmpty(Employee.FirstName))
{
    string firstLetter = Employee.FirstName.SubString(0, 1);
}

通过这个方法,您可以得到第一个字母的字符串,并由此得到字符:

if (!string.IsNullOrEmpty(Employee.FirstName))
{
    char firstLetter = Employee.FirstName[0];
}

2
第一个返回字符串,第二个返回字符。值得一提。 - H H
如果FirstName为空,则会出现ArgumentOutOfRangeExceptionIndexOutOfRangeException - JiBéDoublevé
@JiBéDoublevé 当然会出现那些异常情况。这只是一个回答问题的示例,而不是解决所有可能出现的问题 :-) 我已经更新了答案。 - Fischermaen

2
要获取字符串中的第一个字符(不一定是字母),请使用索引:
char c = employee.FirstName[0];

您可能需要先检查字符串是否非空,非空白,并去除前导空格,以及第一个字符是否实际上是一个字母:

if (employee != null && employee.FirstName != null) {
    string name = employee.FirstName.TrimStart();
    if (name.Length > 0) {
        char firstChar = name[0];
        if (char.IsLetter(firstChar)) {
            employee.Login = firstChar.ToString();
        }
    }
}

名称最好不要为空。 - H H
是的,看起来更好了。但是那个-1不是我的。 - H H

2
char firstCharOfFirstName = someEmployee.FirstName[0];

如果“FirstName”字段可以包含前导空格,你可以这样做:

char firstCharOfFirstName = someEmployee.FirstName.Trim()[0];

正如其他答案所提到的,检查空字符串和null字符串是很好的做法。


1
我不知道是谁对完全有效的答案进行了-1... +1。 - Corey Ogburn

1

如果名字可能为空,那么在获取第一个字母时就需要检查。

FirstName.Substring(0, Math.Min(FirstName.Length, 1))

如果FirstName字符串为空,则会返回一个空字符串,否则返回第一个字符作为字符串,以便您可以将其与姓氏连接起来。

为什么要点踩?如果你不解释哪里有问题,那么回答就无法得到改进。 - Guffa

1
请记住,如果条件不符合要求,SubString() 或 FirstName[0] 将抛出 ArgumentOutOfRangeExceptionIndexOutOfRangeException 异常。
FirstName == string.Empty

所以,这段代码至少可以避免异常:

if(str2 != null)
{
    char result = (str2.Length > 0)
        ? str2[0]
        : (char)0;
}

不要忘记,如果字符串为空,此代码将返回false结果!


其他答案忽略了ArgumentOutOfRangeException,提到它的话我会给你加一分。 - Esoteric Screen Name
它没有处理FirstName == null的情况。 - Mark Byers

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