replace html标签,RegEx.Replace但在html标签中排除匹配?

我有一个名为HighlightKeywords的助手方法,我在查看搜索结果时使用论坛,突出显示用户搜索的帖子中的关键字。RegEx.Replace但在html标签中排除匹配?

我遇到的问题是,例如,用户搜索关键字'hotmail',其中HighlightKeywords方法然后找到该关键字的匹配项,并用指定要应用的样式的span标签包装它,它会查找匹配项在html定位标记中,在某些情况下还有图像标记。因此,当我将突出显示的帖子渲染到屏幕上时,html标签被破坏(由于跨度被插入其中)。

这里是我的功能:

public static string HighlightKeywords(this string s, string keywords, string cssClassName)

{

if (s == string.Empty || keywords == string.Empty)

{

return s;

}

string[] sKeywords = keywords.Split(' ');

foreach (string sKeyword in sKeywords)

{

try

{

s = Regex.Replace(s, @"\b" + sKeyword + @"\b", string.Format("{0}", "$0"), RegexOptions.IgnoreCase);

}

catch {}

}

return s;

}

会是什么,以防止这种破坏的最佳方式?即使我只是简单地排除在锚标记(无论是网页还是电子邮件地址)还是图像标记内发生的任何匹配?

+0

你真的需要使用某种HTML解析器,检查每个元素的匹配。如果包含元素能够接受包含文本部分的样式,则应用它。 –

2011-05-24 15:16:42

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值