【发布时间】:2017-06-13 12:51:14
【问题描述】:
我有以下代码:
String[] splititemcol;
String[] splititem;
String singlestring;
while (reader.Read())
{
splititemcol = reader.GetValue(2).ToString().Split((char)16); //split each item
for (int i = 0; i < splititemcol.Count(); i++)
{
splititem = splititemcol[i].ToString().Split((char)14);
resultstr.Append("<tr><td>" + splititem[0] + "</td><td>");
singlestring = "";
for(int k=0;k<splititem.Count();k++)
{
if(k==2)
{
singlestring = splititem[k].ToString();
break;
}
}
resultstr.Append(singlestring + "</td></tr>");
}
}
在上面的代码中,我可以获得第三个 splititem 的值。
String[] splititemcol;
String[] splititem;
String singlestring;
while (reader.Read())
{
splititemcol = reader.GetValue(2).ToString().Split((char)16); //split each item
for (int i = 0; i < splititemcol.Count(); i++)
{
splititem = splititemcol[i].ToString().Split((char)14);
resultstr.Append("<tr><td>" + splititem[0] + "</td><td>");
singlestring =splititem[2].ToString();
resultstr.Append(singlestring + "</td></tr>");
}
}
在上面的代码中,我尝试仅通过数组索引获取第三个splititem 的值,即没有foreach。
但它会在第 9 行引发Index was outside the bounds 错误,如下所示。
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IndexOutOfRangeException: Index was outside the bounds of the array.
当我测试 splititem.Count 时,它显示为 4。
编辑:
我像这样手动将数组的每个值存储在变量中,并且都是返回值。所以我得出的结论是,要么我们必须通过 for 循环来迭代数组,要么这个脚本由于字符串中的奇怪分隔符(字符 14)而被卡住。
String[] splititemcol;
String[] splititem;
String singlestring;
String item="";
String weight="";
String quantity="";
String amount="";
while (reader.Read())
{
splititemcol = reader.GetValue(2).ToString().Split((char)16); //split each item
for (int i = 0; i < splititemcol.Count(); i++)
{
splititem = splititemcol[i].ToString().Split((char)14);
resultstr.Append("<tr><td>" + splititem[0] + "</td><td>");
singlestring = "";
for(int k=0;k<splititem.Count();k++)
{
if (k == 0)
item = splititem[k].ToString();
else if (k == 1)
weight = splititem[k].ToString();
else if (k == 2)
quantity = splititem[k].ToString();
else if (k == 3)
amount = splititem[k].ToString();
}
resultstr.Append(weight + "</td><td>" + quantity + "</td><td>" + amount + "</td></tr>");
}
}
感谢你们所有试图解决这个问题的人。
【问题讨论】:
-
这意味着
splititem[2]不存在。 -
你能解释一下吗?
-
表示数组
splititem最多只有2个元素,而不是3个 -
实际上这意味着
splititem[2]存在于一些个读者结果中,但不是所有个结果。 -
Dhay,它可能会说第一个项目的计数为 4,但我敢打赌,错误不在第一个项目上,它可能更进一步,这意味着文件夹项目或其他内容类型不有第三个字段。