我有以下C#代码:
ArticleContent = ds1.Tables[0].Rows[i]["ArticleContent"].ToString(); if (ArticleContent.Length > 260) { ArticleContent = ArticleContent.Remove(ArticleContent.IndexOf('.',250)) + "..."; }
这里的问题是我收到这个错误消息:
StartIndex cannot be less than zero.
为什么和如何解决它?
解决方法
你得到这个错误,因为没有”.索引250之后的字符,所以IndexOf返回-1.然后,您尝试删除位置-1的字符,它会给您看到的错误.
还要意识到,删除只能删除该位置的一个字符,而不是该位置之后的所有字符.我想你想要的是:
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个字符,如果可能,打破句子.