-2

文字列の最初の 200 語を抽出しようとしていますが、次のエラーが発生することがあります。

"Index and length must refer to a location within the string. Parameter name: length"

コードは次のとおりです。

int i = GetIndex(fullarticle, 200);
string result = fullarticle.Substring(0, i);

これを修正するにはどうすればよいですか?

4

4 に答える 4

12

文字列が 200 文字未満であるため、範囲外になります

解決するMath.Minには、文字列の長さと 200 の間の低い値を選択します。

fullarticle.Substring(0, Math.Min(fullarticle.Length, 200));

これで時間が節約できることを願っています。

于 2015-06-17T15:00:41.820 に答える
1

エラーがstring.Substringから発生していると想定しても安全です。startIndex + length > given.LengthまたはstartIndex < 0またはがlength < 0GetIndexより大きい値fullarticle.Lengthまたは負の数を返す場合にこのエラーが発生するとします。エラーが存在するGetIndexため、お持ちのコードを続行したい場合は、コードを投稿しGetIndexて最良の回答を得る必要があります。

何か違うものを探しているなら、これを試すことができます:

static string GetShortIntroduction(string phrase, int words)
{
    // simple word count assuming spaces represent word boundaries
    return string.Join(" ", phrase.Split().Take(words));
}
于 2013-02-14T18:52:39.980 に答える
1

これはおそらく、文字列に含まれる単語数が 200 語未満であり、 の文字数よりも大きいGetIndex値が返されるために発生している可能性があります。エラーの例としてifullarticle

"s".Substring(0,2)

スロー

ArgumentOutOfRangeException: インデックスと長さは、文字列内の場所を参照する必要があります。パラメータ名: 長さ

文字列の最初の 200 語まで取得することが目的の場合は、チェックする必要があります。

  1. 文字列がヌルではありません
  2. 文字列内の単語数。200 語未満の場合は最大インデックス、それ以外の場合は 200 を使用します。
  3. 2 に基づく部分文字列。
于 2013-02-14T18:31:49.277 に答える
0

i は記事全体の長さよりも大きいようです。GetIndex 関数を確認してください。

于 2013-02-14T18:31:17.223 に答える