C#自动给文章关键字加链接实现代码
2023-06-13 09:15:14 时间
主要做的是,文章中的关键字标签加上链接,网上也有很多解决办法,自己整理以便后续在用。
效果如图:
下面是代码:
///<summary>
///内联
///</summary>
///<paramname="content"></param>
///<returns></returns>
publicstringReplaceTextTag(stringcontent)
{
A a=newA();
stringresult="";
if(!string.IsNullOrEmpty(content))
{
//标签
List<Tag>listAll=a.GetTag();获取标签也就是所谓的关键字
stringstr1=content;
result=keyAddUrl(str1,listAll);
}
returnresult;
}
///<summary>
///加title,加链接
///</summary>
///<paramname="src"></param>
///<paramname="keys"></param>
///<returns></returns>
privatestringkeyAddUrl(stringsrc,List<TopicTag>keys)
{
Regexreg=newRegex(@"(?i)(?:^|(?<!<a\b(?>[^<>]*))>)(?>[^<>]*)(?:<|$)");
intlength=0;
stringtemp=string.Empty;
returnreg.Replace(src,delegate(Matchm)
{
temp=m.Value;
length=temp.Length;
for(inti=keys.Count-1;i>=0;i--)
{
temp=Regex.Replace(temp,@"(?is)^((?:(?:(?!"+Regex.Escape(keys[i].Label)+@"|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!"+Regex.Escape(keys[i].Label)+@"|</?a\b).)*)(?<tag>"+Regex.Escape(keys[i].Label)+@")",
@"$1<ahref=""http://cn.greatexportimport.com/"+keys[i].Id+@"""target=""_blank""title=""${tag}"">${tag}</a>");
if(length!=temp.Length)
{
keys.Remove(keys[i]);
}
length=temp.Length;
}
returntemp;
});
}
在页面调用此方法即可:<p><%=Tag.ReplaceTextTag(Tag.Contents)%></p><br/>