索引超出了数组字符串的范围

问题描述:

我得到以下代码的错误:在这里,我的pagedata.length是495,并且我在变量k中使用了其中的57个。索引超出了数组字符串的范围

for(int k = 0; k < pagedata.Length;k++) 
     { 
      string[] textdata = pagedata.Split(new char[0]); 
      string stringforemail = textdata[k]; 
      if (stringforemail.Contains("@") && stringforemail.Contains(".")) 
      { 
       TableRow tr = new TableRow(); 
       //tr.BorderStyle = BorderStyle.Solid; 
       TableCell tc = new TableCell(); 
       tc.BorderStyle = BorderStyle.Solid; 
       tc.Text = stringforemail; 
       tr.Cells.Add(tc); 
       Table1.Rows.Add(tr); 
      } 
     } 

因为我的代码中有错误,但我无法弄清楚错误..请帮我理解错误。

谢谢

+0

什么长度是文本数据[]? – jbutler483 2014-08-29 12:20:34

+0

显然你的循环一直运行到'pagedata.Length',但是它比'pagedata.Split(new char [0])更高,length' - textdata [k]超出了界限。 – 2014-08-29 12:20:35

+0

我们无法真正帮助您。 Pagedata.Length> Split.NewChar.Length,因此您在寻找的内容不一致。正则表达式可能会有所帮助。 – DidIReallyWriteThat 2014-08-29 12:23:34

您试图在新的空字符数组上分割文本。这给你一个项目的数组,值为pagedata

因此,您的textdata[k]将失败,因为它使用的长度大于1(数组长度)的pagedata

我不知道你正在尝试用它做,但你的代码看起来应该是这样的:

string[] textdata = pagedata.Split("your split string"); 

foreach (string stringforemail in textdata) 
{ 
    if (stringforemail.Contains("@") && stringforemail.Contains(".")) 
    { 
     TableRow tr = new TableRow(); 
     //tr.BorderStyle = BorderStyle.Solid; 
     TableCell tc = new TableCell(); 
     tc.BorderStyle = BorderStyle.Solid; 
     tc.Text = stringforemail; 
     tr.Cells.Add(tc); 
     Table1.Rows.Add(tr); 
    } 
} 

如果你与你的分隔符使用文本替换your split string

+0

它看起来像hes将'pagedata'分解为'0'。 因此,textdata [k],k应该是0,数组的第一个elemenet应该总是在那里。 – DidIReallyWriteThat 2014-08-29 12:25:50

+0

@CalvinSmith:可能,但从帖子不清楚。 – 2014-08-29 12:27:19

+0

实际上,只要他在他的pagedata中传递了超过0个字符,textdata [k]总是会在0的位置 – DidIReallyWriteThat 2014-08-29 12:29:41

尝试加入(在该月底环):

if(k==textdata.Length) 
{ 
break; 
} 

这样一旦这已经完成,循环将打破。