6

私の脳は今疲れていて、これに対する簡単な解決策を思いつくことができません.

var res = error.Split('|');
return String.Format("Name: {0} <br /> Email: {1}", res[0] , res[1]);

| がない場合 分割すると、エラーがスローされます。これは、デフォルトの「名前なし」をスローするか、それを渡すだけの迅速かつ適切な方法です。位置 [0] と [1] だけを気にします。

サンプルデータ

Tom | huntard@123.com
Tom
Tom | huntard@123.com
Tom | huntard@123.com | texas

レッドブルが必要です。

4

7 に答える 7

8

ElementAtOrDefault()名前空間の拡張メソッドをSystem.Linqnull 合体演算子 ( ) と組み合わせて使用​​すると??、洗練されたソリューションを実現できます。

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

文字列 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 に答える
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 に答える