检查阵列单元格是否有值

时间:2014-10-14 14:35:12

标签: c# asp.net

我正在抓取一串数据,其中每个元素对由';'分隔字符。所以,我将一个字符串拆分成一个数组来获取每个数据块。

每个块现在由一个标签和值对组成,它们由':'分隔。但是,最终元素通常不具有匹配值。例如:

food:cheese
name:dave
car:renault
somethingelse

我抓住这些对并将它们分成第二个数组,然后通过类似的foreach迭代;

int a=0;
            string[,] tmpInfo = new string[10, 2];
            foreach(var info in details)
            {
                string[] tmp = info.Split(':');

                if (tmp[1].ToString != null)
                {
                  //do something
                }
             }

然而,当我遇到最后一个元素没有分隔符的奇怪场景时,我遇到了“索引超出数组范围”的问题。

从我的代码中可以看出,我尝试测试数组单元格是否为空。我也试过测试一个空字符串,但问题仍然存在。

非常感谢任何建议/指针/解决方案。

1 个答案:

答案 0 :(得分:1)

而不是检查if (tmp[1].ToString != null),检查返回数组的Length,如:

if(tmp.Length == 2) //if it should always be 2

如果字符串中有空字符串或没有分隔符,则最终会在数组中包含1个元素。稍后当您尝试访问索引1处的元素时,您将获得异常,因为数组基于0tmp[1]表示访问返回数组的第二个元素。