3

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++;
        }
    }
}
4

2 に答える 2

11

String.Substring(int, int)(Java のように) 開始インデックスと終了インデックスを取りません。開始インデックスと長さを取ります。したがって、おそらくあなたが望む:

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

ただし、が より大きいこと確認する必要があります。(基本的に、前に来る場合にこれをどのように動作させたいかを考え出す必要があります。)indBindABA

にも同じ動作を適用する必要がありますSubstring(indB, indC)

于 2013-05-28T05:21:46.303 に答える
9

String.Substringメソッドは、開始インデックスと長さを取ります2 つのインデックスを渡しています。

于 2013-05-28T05:21:47.727 に答える