[英]C# string split - index out of bounds
我的大脑现在很累,无法解决这个问题。
var res = error.Split('|');
return String.Format("Name: {0} <br /> Email: {1}", res[0] , res[1]);
如果没有| 拆分,然后抛出错误,这是将默认的“ No Name”或默认值传递给它的一种快速而优美的方法。 我只关心位置[0]和[1]。
样本数据
Tom | huntard@123.com
Tom
Tom | huntard@123.com
Tom | huntard@123.com | texas
我需要一只红牛。
您可以将System.Linq
命名空间中的ElementAtOrDefault()
扩展方法与null-coalescing运算符( ??
)结合使用,以获得一种优雅的解决方案:
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
字符串d =“ int afg;”;
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 **
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.