检查名称字符串是否包含姓氏

时间:2016-12-15 16:13:54

标签: c# string split

我有一个包含名字和姓氏的字符串,我想分成两个单独的字符串,所以我使用了这段代码:

string Delname = bkDel.ContactName;
string[] Deltmp = Delname.Split(' ');
string DelFirstName = Deltmp[0];
string DelLastName = Deltmp[1];

如果有名字和姓氏,它可以正常工作,但如果名称字符串只包含名字,则会导致错误:

  

索引超出了数组的范围。

因为Deltmp[1]为空。

有没有办法检查名称字符串,如果它只包含一个字符串,那么不要尝试拆分?

4 个答案:

答案 0 :(得分:4)

您可以检查数组的长度:

if (Deltmp.Length > 1)
    //Assign to vars

或者您可以检查输入字符串是否包含空格:

if (Delname.Contains(" "))
    //Do split

例如:

string[] Deltmp = Delname.Split(' ');
if (Deltmp.Length > 1)
    //Assign to both
else
    //Assign to only one

答案 1 :(得分:2)

你可以这样做一个简单的检查。

if(Delname.Split(' ').Count() > 1)
{
    // Has First and Last Name
}
else
{
    // Has Single Name
}

答案 2 :(得分:0)

您可以使用Delname.Trim(' ')方法从开头和结尾删除空格,然后使用Delname.Contains(" "))检查字符串

答案 3 :(得分:0)

用正则表达式检查输入怎么样?这是一个简单的正则表达式模式,但根据您支持的语言要求,您可能需要更复杂。

Regex reg = new Regex(@"[A-Za-z]+ [A-Za-z]+");


string Delname = bkDel.ContactName;
    Delname = Delname.Trim()
    if (!reg.IsMatch(Delname)){
    // Don't split
    return;

}
string[] Deltmp = Delname.Split(' ');
string DelFirstName = Deltmp[0];
string DelLastName = Deltmp[1];