问题循环遍历2D Jagged Array的每个值"索引超出了数组的范围"

时间:2015-01-25 00:36:44

标签: c# arrays for-loop

我从文本文件生成2D锯齿状数组,该数组是Paragraphs>句子,这个数组是正确形成的,我可以指定一个值,如[0] [0]等,它将正确显示。

然而,当我尝试在循环中执行此操作时,在尝试显示“results [0] [0]”时,我得到“索引超出了数组的范围”。

以下是数组生成代码:

string documentPath = @"I:\Project\Test Text.txt";
string content;
string[][] results;

protected void sentenceSplit()
{
    content = Regex.Replace(File.ReadAllText(documentPath), @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
    var paragraphs = content.Split(new char[] { '\n' });
    results = new string[paragraphs.Length][];
    for (int i = 0; i < results.Length; i++)
    {
        results[i] = Regex.Split(paragraphs[i], @"(?<!\w\.\w.)(?<![A-Z][a-z]\.)(?<=\.|\?)\s");
    }
}

这是循环代码:

protected void Intersection()
{
    for (int i = 0; i < results.Length; i++)
    {
        for (int s = 0; s < results.Length; s++)
        {
            TextboxSummary.Text += results[i][s];
        } 
    } 
}

我以前没有做过很多关于2D数组的工作,但觉得这应该有效,当它测试时它不会向文本框输出任何东西,即使它应该从[0] [0]开始,它肯定会保存数据,[1] [1]也保留了数据,如果它以某种方式跳过那个。

1 个答案:

答案 0 :(得分:3)

正如我在评论中所说,你的代码在你的内循环中抓取了错误的数组长度。你的内部循环应该获得在外部循环的索引处的数组的长度。像这样:

for (int i = 0; i < results.Length; i++)
{
    // Get the length of the array that is at index i
    for (int s = 0; s < results[i].Length; s++)
    {
        TextboxSummary.Text += results[i][s];
    } 
}