0

指定された単語の後に文字列を取得しようとしています。以下はコードです。

private static string GetStringAfterWord(string text, int position)
    {
        if (text.Length - 1 < position || text[position] == ' ') return null;

        int start = position;
        int end = position;

        while (end < text.Length - 1 )   
        end++;

        return text.Substring(start, end);

    }

このコードは常にこのエラーを出します:System.ArgumentOutOfRangeException:インデックスと長さは文字列内の場所を参照する必要があります。

string.Lengthは、合計文字数と、常に範囲外である理由を返します。私はこれを間違っていますか?

4

3 に答える 3

1

メソッドの 2 番目の引数はSubstring()インデックスではなく、長さです。

于 2012-10-01T02:45:55.790 に答える
1

そのはず:

if (text.Length - 1 < position || position < 0 || text[position] == ' ')

そして交換

 while (end < text.Length - 1 )   
    end++;

 end = text.Length - start;
于 2012-10-01T02:40:42.297 に答える
1

string.SubStringの 2 番目の引数は部分文字列の長さです。

あなたの例では、あなたは言っていますgrab the string starting at <start> and is <end> characters longstartが 2 で文字列の長さが 11 の場合、10 end.. となり、これらを足し合わせると 12 になります (文字列の長さは 11 ですが、10+2=12..)。

あなたはこれを必要とします:

return text.Substring(start, end - start);

..この:

while (end < text.Length)
于 2012-10-01T02:42:47.393 に答える