C# 通过二维锯齿数组的每个值发出循环;索引超出了数组的边界;
我从一个文本文件生成了一个2D锯齿数组,数组是段落>句子,这个数组的格式正确,我可以在[0][0]等外部指定一个值,它将正确显示 但是,当我尝试在循环中执行此操作时,当我尝试显示“结果[0][0]”时,会得到“索引超出了数组的边界” 以下是阵列生成代码:C# 通过二维锯齿数组的每个值发出循环;索引超出了数组的边界;,c#,arrays,for-loop,C#,Arrays,For Loop,我从一个文本文件生成了一个2D锯齿数组,数组是段落>句子,这个数组的格式正确,我可以在[0][0]等外部指定一个值,它将正确显示 但是,当我尝试在循环中执行此操作时,当我尝试显示“结果[0][0]”时,会得到“索引超出了数组的边界” 以下是阵列生成代码: string documentPath = @"I:\Project\Test Text.txt"; string content; string[][] results; protected void sentenceSplit() {
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");
}
}
string documentPath=@“I:\Project\Test Text.txt”;
字符串内容;
字符串[][]结果;
受保护的void语句split()
{
content=Regex.Replace(File.ReadAllText(documentPath),@“^\s+$[\r\n]*”,“”,RegexOptions.Multiline);
var段落=content.Split(新字符[]{'\n'});
结果=新字符串[段落长度][];
for(int i=0;i 结果[i]=Regex.Split(段落[i],@“(?正如我在评论中所说的,您的代码在内部循环中获取了错误的数组长度。您的内部循环应该获取位于外部循环索引处的数组长度。如下所示:
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];
}
}
for(int i=0;i
正如我在评论中所说,您的代码在内部循环中获取了错误的数组长度。您的内部循环应该获取外部循环索引处的数组长度。如下所示:
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];
}
}
for(int i=0;i
正如我在评论中所说,您的代码在内部循环中获取了错误的数组长度。您的内部循环应该获取外部循环索引处的数组长度。如下所示:
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];
}
}
for(int i=0;i
正如我在评论中所说,您的代码在内部循环中获取了错误的数组长度。您的内部循环应该获取外部循环索引处的数组长度。如下所示:
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];
}
}
for(int i=0;i
不是结果。外部循环中的长度和结果。内部循环中的长度引用同一对象?IIRC,Length
将仅返回第一个维度的大小。我想您需要结果[I].Length
在你的内环中。我们开始了,完全错过了,现在它指出我无法取消它谢谢你。不客气。有时候,只需要第二双眼睛,特别是如果你在同一段代码上停留了一段时间。不是结果吗。Length
在你的外环中,而结果。Length
在你的你的内循环引用同一个对象?IIRC,Length
将只返回第一个维度的大小。我想你需要results[I].Length
在你的内环中。我们开始了,完全错过了,现在它指出我无法取消它谢谢你。不客气。有时候,只需要第二双眼睛,特别是如果你在同一段代码上停留了一段时间。不是结果吗。Length
在你的外环中,而结果。Length
在你的你的内循环引用同一个对象?IIRC,Length
将只返回第一个维度的大小。我想你需要results[I].Length
在你的内环中。我们开始了,完全错过了,现在它指出我无法取消它谢谢你。不客气。有时候,只需要第二双眼睛,特别是如果你在同一段代码上停留了一段时间。不是结果吗。Length
在你的外环中,而结果。Length
在你的你的内循环引用同一个对象?IIRC,Length
将只返回第一个维度的大小。我想你需要results[I].Length
在你的内部循环中。砰,我们开始了,完全错过了,现在它指出我看不见它。谢谢。不客气。有时只需要再看一眼,特别是如果你在同一段代码上停留了一段时间。