首页  ·  知识 ·  编程语言
给文章关键字加链接
曾祥展   http://www.cnblogs.com/zengxiangzhan/  .NET  编辑:德仔   图片来源:网络
color: #808080//// color: #008000 /spa

/// <summary>
/// 给关键字加链接,同一关键字只加一次
/// </summary>
/// <param name="src">源字符串</param>
/// <param name="keys">关键字泛型</param>
/// <returns>替换后结果</returns>
private string keyAddUrl(string src, List<string> keys)
{
    Regex reg
= new Regex(@"(?i)(?:^|(?<!<a\b(?>[^<>]*))>)(?>[^<>]*)(?:<|$)");
   
int length = 0;
   
string temp = string.Empty;
   
return reg.Replace(src, delegate(Match m)
    {
        temp
= m.Value;
        length
= temp.Length;
       
for (int i = keys.Count - 1; i >= 0; i--)
        {
            temp
= Regex.Replace(temp, @"(?is)^((?:(?:(?!" + Regex.Escape(keys[i]) + @"|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!" + Regex.Escape(keys[i]) + @"|</?a\b).)*)(?<tag>" + Regex.Escape(keys[i]) + @")", @"$1<a href=""http://www.21shipin.com"" target=""_blank"" title=""${tag}"">${tag}</a>");
           
if (length != temp.Length)
            {
                keys.Remove(keys[i]);
            }
            length
= temp.Length;
        }
       
return temp;
    });
}
//调用
string str1 = "我想学习c语言教程,我想看的是C语言视频教程,其它什么C语言教程,我都不想看。我喜欢C语言";
List
<string> keys = new List<string>(new string[] { "c语言", "C语言教程", "c语言视频教程" });
string result = keyAddUrl(str1, keys);
richTextBox2.Text
= result;
/*------------输出------------
我想学习<a href="
http://www.21shipin.com" target="_blank" title="c语言教程">c语言教程</a>,我想看的是<a href="http://www.21shipin.com" target="_blank" title="C语言视频教程">C语言视频教程</a>,其它什么<a href="http://www.21shipin.com" target="_blank" title="C语言">C语言</a>教程,我都不想看。我喜欢C语言
*/
 

来自:过客

本文作者:曾祥展 来源: http://www.cnblogs.com/zengxiangzhan/
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读