C# 索引超出了数组字符串的边界
下面的代码有一个错误:这里我的pagedata.length是495,我在变量k中使用了57个C# 索引超出了数组字符串的边界,c#,arrays,C#,Arrays,下面的代码有一个错误:这里我的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
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);
}
}
for(int k=0;k
当然,我的代码中有一些错误,但我无法找出错误。。请帮我理解错误
谢谢尝试添加(在for循环的末尾):
这样,一旦完成,循环将中断。您正试图在新的空字符数组上拆分文本。这将为您提供一个包含一项的数组,即
pagedata
的值
因此,您的textdata[k]
将失败,因为它使用了pagedata
的长度,该长度大于1(数组的长度)
我不知道你想用它做什么,但你的代码应该是这样的:
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);
}
}
将拆分字符串替换为用作delimeter的文本。文本数据的长度是多少[]?显然,您的循环一直运行到
pagedata.length
,但它高于pagedata.split(新字符[0])。length
-textdata[k]超出了范围。我们无法真正帮助您。Pagedata.Length>Split.NewChar.Length,因此您的搜索内容不一致。正则表达式可能会有所帮助。pagedata.length
是pagedata
中的字符数,但是循环变量k
被用作texdata
的索引,这是拆分pagedata
的结果。这两者不一定相等。@Maharshi,您希望textdata[]包含什么内容?(是否将是单个字符/单词/行/等)?它看起来像是在“0”上拆分页面数据。因此,textdata[k],k应该是0,数组的第一个元素集应该总是在那里。事实上,textdata[k],只要他在pagedata中传入了超过0个字符,就会始终在0位置产生一个结果。得到我的位在变量k中使用了57个。呃,不管怎样,patricks answer是一个好答案。使用foreach循环总是比在for循环后面做数学运算更容易。@jbutler483:没关系。foreach
循环将为您完成这项工作。
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);
}
}