【百分求助】文章关键字替换

sljz 2007-09-20 07:59:31
现在数据库中有一张表,含有关键字和链接,现在希望系统自动将文章中包含的关键字替换成链接。有些问题询问:

1. 关键字如果非常多的话,遍历数据然后replace的话效率会影响很大,还有其他什么好方法解决吗?

2. 如果关键字有重复,如何避免无效链接?

举例说明:
假设有一个关键字是“文章”,链接为a.html,一个关键字为"文",链接为b.html,这样使用替换的话,会产生<a href=a.html><a href=b.html>文</a>章</a>,如何避免类似事件发生,比如判断该关键字所在部分是否已经有链接了,如果有的就不加链接。
...全文
392 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_28928247 2008-04-16
  • 打赏
  • 举报
回复
这篇问斩可以完美解决重复替换问题

http://www.zhouhaihe.com/blog/article.asp?id=100
bendise 2007-09-22
  • 打赏
  • 举报
回复
假设有一个关键字是“文章”,链接为a.html,一个关键字为"文",链接为b.html,这样使用替换的话,会产生<a href=a.html><a href=b.html>文</a>章</a>,如何避免类似事件发生,比如判断该关键字所在部分是否已经有链接了,如果有的就不加链接。
=========================================
这个需求没有写清楚,应该让他写清楚如果出现上述情况的话,是应该给文加链接呢,还是应该给文章加链接呢,那个优先级比较高,如果是文加链接,那就不要考虑文章了,就这样,改下需求就好了
cat_hsfz 2007-09-22
  • 打赏
  • 举报
回复
避免重复替换,其实中文分词的最低分词法就能解决了(虽然是非常低级的方法,能解决问题就好)。分词的同时替换,那样子效率应该还可以。
anncesky 2007-09-22
  • 打赏
  • 举报
回复
找到了,哈
anncesky 2007-09-22
  • 打赏
  • 举报
回复
非常想知道怎么在

比如我的anncesky() 括号里加上签名

我找了N久没找到
wangkun9999 2007-09-22
  • 打赏
  • 举报
回复
1. 关键字如果非常多的话,遍历数据然后replace的话效率会影响很大,还有其他什么好方法解决吗?

用存储过程实现,把压力交给数据库;

2. 如果关键字有重复,如何避免无效链接?

举例说明:
假设有一个关键字是“文章”,链接为a.html,一个关键字为"文",链接为b.html,这样使用替换的话,会产生<a href=a.html><a href=b.html>文</a>章</a>,如何避免类似事件发生,比如判断该关键字所在部分是否已经有链接了,如果有的就不加链接。

=>>
这种情况先要剔除关键字中的重复情况;
如果同时存在"文章"和"文"这样的情况,应该考虑把"文"剔除掉(方法很简单)再替换;
anncesky 2007-09-22
  • 打赏
  • 举报
回复
用string.replace话那是N慢的
用正则
Regex.Replace

用正则的话,那么关键字和链接的html代码在全页要类唯一

比如 <a href=a.html>文章</a> 这么一个关键字,要替换成
<a href=b.html>狗屁</a>

可以这样
string str=@"<a href=a.html>文章</a>";
str=Regex.Replace(str, "(<a\\s+href=)[^>]+(>)[^<>]+(<\\/a>)", "$1b.html$2狗尼$3", RegexOptions.IgnoreCase | RegexOptions.Multiline);

那么"(<a\\s+href=)[^>]+(>)[^<>]+(<\\/a>)"这个正则要唯一的表示这个
<a href=a.html>文章</a>或者同类你的也想替换的关键字
蝶恋花雨 2007-09-22
  • 打赏
  • 举报
回复
学习下帮顶,没有做过。
BearRui 2007-09-22
  • 打赏
  • 举报
回复
类似功能:
http://topic.csdn.net/t/20040329/13/2898842.html
Ny-6000 2007-09-22
  • 打赏
  • 举报
回复
正则表达式感觉可行.
<.+?>这个可以找到所有格式字符的
sljz 2007-09-22
  • 打赏
  • 举报
回复
还有人吗?
sljz 2007-09-20
  • 打赏
  • 举报
回复
各位老大,不是说理论的时候,我要具体实现。。。。
kirinboy 2007-09-20
  • 打赏
  • 举报
回复
需要使用中文分词,如果客户有此需求的话,可以考虑加钱。。。
flyingfz 2007-09-20
  • 打赏
  • 举报
回复
1. 貌似是要遍历的, .net 好像是对字符串操作进行了优化,性能上的损失应该不是太大的问题.
2. 用正则表达式应该可以达到你的目的.
Harvey_zhang 2007-09-20
  • 打赏
  • 举报
回复
up
showmy 2007-09-20
  • 打赏
  • 举报
回复
感觉这个需求有问题``mark

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧