我有一个包含名字和姓氏的字符串,我想分成两个单独的字符串,所以我使用了这段代码:
string Delname = bkDel.ContactName;
string[] Deltmp = Delname.Split(' ');
string DelFirstName = Deltmp[0];
string DelLastName = Deltmp[1];
如果有名字和姓氏,它可以正常工作,但如果名称字符串只包含名字,则会导致错误:
索引超出了数组的范围。
因为Deltmp[1]
为空。
有没有办法检查名称字符串,如果它只包含一个字符串,那么不要尝试拆分?
答案 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];