6

我的大脑现在很累,无法想出一个简单的解决方案。

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

我需要一只红牛。

4

7 回答 7

8

您可以将命名空间中的ElementAtOrDefault()扩展方法System.Linq与空合并运算符 ( ??) 结合使用,以获得优雅的解决方案:

return String.Format("Name: {0} <br /> Email: {1}", 
    res.ElementAtOrDefault(0) ?? "No name", 
    res.ElementAtOrDefault(1) ?? "No email");
于 2013-01-15T17:35:43.530 回答
4

您如何将扩展方法添加到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"));
于 2013-01-15T17:33:14.023 回答
3

添加对名称是否存在值的检查,以验证第一项,并在数组长度上添加对剩余部分的内联检查。

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");
于 2013-01-15T17:34:08.273 回答
1
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";
于 2013-01-15T17:34:18.123 回答
0

检查长度,res如果没有则插入默认值res[1]

return String.Format("Name: {0} <br /> Email: {1}", res[0] , res.Length > 1 ? res[1] : "N/A");
于 2013-01-15T17:33:28.703 回答
0

你可以放在顶部:

    if(error.Contains("|"))
     {return "No Name";}

var res = error.Split('|');
return String.Format("Name: {0} <br /> Email: {1}", res[0] , res[1]);
If 
于 2013-01-15T17:35:43.500 回答
0

字符串 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 **
于 2016-11-04T09:27:07.690 回答