c#字符串分割-索引越界
本文关键字:索引 越界 分割 字符串 | 更新日期: 2023-09-27 17:53:14
我的大脑现在很累,不能想出一个简单的解决方案。
var res = error.Split('|');
return String.Format("Name: {0} <br /> Email: {1}", res[0] , res[1]);
如果没有| split,那么它会抛出一个错误,这将是一个快速而优雅的方式,只是抛出一个默认的"no Name"或传递它。我只关心位置[0]和[1]。
示例数据Tom | huntard@123.com
Tom
Tom | huntard@123.com
Tom | huntard@123.com | texas
我需要红牛。
您可以使用System.Linq
命名空间的ElementAtOrDefault()
扩展方法和空合并运算符(??
)来获得一个优雅的解决方案:
return String.Format("Name: {0} <br /> Email: {1}",
res.ElementAtOrDefault(0) ?? "No name",
res.ElementAtOrDefault(1) ?? "No email");
如何为IList<T>
添加扩展方法:
public static T IndexOrDefault<T>(this IList<T> list, int index, T defaultValue)
{
if (index < 0 || index >= list.Count)
{
return defaultValue;
}
return list[index];
}
那么你可以这样使用:
var res = error.Split('|');
return String.Format("Name: {0} <br /> Email: {1}", res[0] , res.IndexOrDefault(1, "No E-mail"));
添加对名称是否有值的检查,以验证第一项,并为其余项添加对数组长度的内联检查。
var res = error.Split('|');
return String.Format("Name: {0} <br /> Email: {1}",
!String.IsNullOrEmpty(res[0]) ? res[0] : "No Name",
res.Length > 1 ? res[1] : "No Email");
String[] res = error.Split('|');
if (res.Length >= 1)
return String.Format("Name: {0} <br /> Email: {1}", res[0] , res[1]);
// Else return a plain message...
return "Error";
检查res
的长度,如果没有res[1]
则插入默认值
return String.Format("Name: {0} <br /> Email: {1}", res[0] , res.Length > 1 ? res[1] : "N/A");
你可以把
if(error.Contains("|"))
{return "No Name";}
var res = error.Split('|');
return String.Format("Name: {0} <br /> Email: {1}", res[0] , res[1]);
If
string d ="int a f g;";
string[] row = d.Split(';');
foreach (string c in row)
{
string[] col = c.Split(' ');
dataGridView1.Rows.Add(col[0],col[1]);
}//this code show string col only one length **