无法从字符串收集子字符串

本文关键字:字符串 | 更新日期: 2023-09-27 18:15:43

我正在从来自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++;
        }
    }
}

无法从字符串收集子字符串

String.Substring(int, int)不接受开始索引和结束索引(就像在Java中那样);它接受起始索引和长度。也许你想:

sr = y[i].Substring(indA, indB - indA);

但是您也应该检查indB大于indA。(如果B出现在A之前,你需要弄清楚你希望它如何表现,基本上。)

您还需要对Substring(indB, indC)应用相同的行为。

字符串。方法接受起始索引和长度。你传入了两个指标。