我正在尝试提取字符串的前 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);
我该如何解决?
它超出范围,因为您的字符串短于 200 个字符
为了补救,您可以使用Math.Min
它将选择字符串长度和 200 之间的较低值。
fullarticle.Substring(0, Math.Min(fullarticle.Length, 200));
希望这可以节省您一些时间。
这可能是因为字符串中的单词少于 200 个,并且可能来自GetIndex
返回的值i
大于fullarticle
. 作为错误的一个例子
"s".Substring(0,2)
投掷
ArgumentOutOfRangeException:索引和长度必须引用字符串中的位置。参数名称:长度
如果您的意图是获取字符串中的前 200 个单词,则需要检查
假设错误来自string.Substring似乎是安全的。假设您在startIndex + length > given.Length
orstartIndex < 0
或length < 0
,GetIndex
返回大于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));
}
看起来 i 大于整个全文长度。检查您的 GetIndex 函数。