我有以下C#代码:

ArticleContent = ds1.Tables[0].Rows[i]["ArticleContent"].ToString();

if (ArticleContent.Length > 260)
{
   ArticleContent = ArticleContent.Remove(ArticleContent.IndexOf('.', 250)) + "...";
}

这里的问题是我收到此错误消息:



为什么以及如何解决?

最佳答案

之所以出现该错误,是因为索引250或索引250之后没有'.'字符,因此IndexOf返回-1。然后,您尝试删除-1位置上的字符,这会给您看到的错误。

还应意识到Remove仅删除该位置的一个字符,而不删除该位置之后的所有字符。我怀疑您想要的是:

if (ArticleContent.Length > 260)
{
   int lastPeriod = ArticleContent.LastIndexOf('.');
   if(lastPeriod < 0)
      lastPeriod = 257;  // just replace the last three characters
   ArticleContent = ArticleContent.Substring(0,lastPeriod) + "...";
}

这将在字符串中添加省略号,确保不再是260个字符,并且在可能的情况下分句。

10-08 04:53