Asp.net实现文章内关键词替换

本文介绍了一种在文本中替换关键词的方法,避免了关键词重复替换的问题。通过将关键词按长度排序并使用临时变量与正则表达式,确保了每个关键词仅被替换一次。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在很多网站都有文章内关键词替换功能,比如:

.Net中的Asp.net

替换成

.Net中的<a href="asp.net">Asp.net</a>

本文就是教你如何实现该功能,以及实现该功能所遇到的难题,以及如何解决.

继续本文开头的例子,你可以看到,如果只是替换asp.net这个关键词,用.net是很容易实现的,如下

string test = test.Replace("Asp.net","<a href=\"asp.net\">Asp.net</a>");

但是实际使用中,并不会那么简单,比如我们增加另一个关键词.net ,现在我们使用上述语句将会得到如下结果:

<a href=".net">.Net</a>.Net中的<a href="asp.net">Asp<a href=".net">.net</a></a>

上面的结果并不是我们想要的,但为什么会这样呢?因为Asp.net包含了.Net这个关键词,所以在上面的语句实现替换时就会出现重复替换的问题.

解决的方法也不难,其实很简单,首先我们声明一个临时变量来保存文章内容,如下

string txt=".Net中的Asp.net";

string content=txt;

然后我们把关键字按照长度又长到短排序.接着进行循环处理

string txt = ".Net中的Asp.net";

List<string> keywordlist = new List<string>();

keywordlist.Add("Asp.net");

keywordlist.Add(".net");

string content = txt;

foreach (string keyword in keywordlist)
{

...

}

 

在循环体内,我们使用正则来查找关键词:

Regex r = new Regex(keyword.name, RegexOptions.IgnoreCase);
                   MatchCollection mc = r.Matches(content);
                   if (mc.Count > 0)
                   {
                       int i = 0;
                       foreach (Match m in mc)
                       {
                           if (m.Success)
                           {
...
                           }
                       }
                   }


 

我们每次查找出后,就将临时变量content里的关键词替换成等长度的*,例如查找Asp.net,替换后就是

.Net中的*******

这样,等到下次循环到.Net这个关键词时.临时变量里就没有ASP.NET这个词了,也就不会有重复替换的问题了~

 

转自:http://www.th7.cn/Article/bc/nt/200905/356306.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值