我从一个来自word文件的字符串中提取子字符串。但是,即使子字符串的起始和结束索引小于字符串的长度,我也会收到index out of range
的错误。
for(int i=0;i<y.Length-1;i++)
{
if (Regex.IsMatch(y[i], @"^[A]"))
{
NumberOfWords= y[i].Split(' ').Length;
if (NumberOfWords > 5)
{
int le = y[i].Length;
int indA = y[i].IndexOf("A");
int indB = y[i].IndexOf("B");
int indC = y[i].IndexOf("C");
int indD = y[i].IndexOf("D");
//if (indD > 1 && indC > 1)
// breakop2 = breakop2 + '\n' + '\n' + y[i].Substring(indC, indD);
if (indC > 1 && indB > 1)
breakop1 = breakop1 + '\n' + y[i].Substring(indB, indC);
if (indB > 1)
sr = y[i].Substring(indA, indB);
else
sr = y[i];
breakop = breakop +'\n'+'\n'+ sr;
Acount++;
//textBox1.Text = s[i];
check1 = check1 + '\n' + '\n' + y[i];
//i++;
}
}
}
答案 0 :(得分:11)
String.Substring(int, int)
不接受起始索引和结束索引(就像在Java中一样);它需要一个起始索引和一个长度。所以也许你想要:
sr = y[i].Substring(indA, indB - indA);
但您应该还检查indB
是否大于indA
。 (如果B
基本上出现A
,你需要弄清楚你希望这种行为的表现。)
您还需要为Substring(indB, indC)
应用相同的行为。
答案 1 :(得分:9)
String.Substring方法采用起始索引和长度。你传递了两个指数。