C# 索引和长度必须引用该字符串内的位置

if(dr["content"].ToString().Length<=120)returnRegex.Replace(dr["content"].ToString(),... if (dr["content"].ToString().Length <= 120)
return Regex.Replace(dr["content"].ToString(), "<[^>]+>", "", RegexOptions.IgnoreCase).Replace("nbsp;"," ");
else
return Regex.Replace(dr["content"].ToString(), "<[^>]+>", "", RegexOptions.IgnoreCase).Replace("nbsp;"," ").Substring(0, 120);
以上是代码,请问这里为什么会报“索引和长度必须引用该字符串内的位置”
参数名: length 的错误!
展开
 我来答
grass107
2010-02-26 · TA获得超过687个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:359万
展开全部
问题出在Substring(0, 120);

因为用了Replace把nbsp;换成了" "
也就是说,把5个字符换成了1个。

如果这个字符串的长度是120,而且有一个 
那么,替换之后,长度就小于120了,

而你的SubString截取的是120个字符,很显然长度不够了。

应该吧Replace放到if前面,用替换后的字符串进行长度判断。
Abel_Zhou_13
2010-02-26 · TA获得超过124个赞
知道答主
回答量:70
采纳率:0%
帮助的人:60.1万
展开全部
.Replace(dr["content"].ToString(), "<[^>]+>", "", RegexOptions.IgnoreCase).Replace("nbsp;"," ").Substring(0, 120);

某条数据Replace之后 nbsp替换成了一个字符 原先的长度就不够121个了 这里Substring(0, 120)就超出长度了
请在if()语句中 提前Replace 然后再判定长度 截取字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式