C#自动给文章关键字加链接实现代码

 更新时间:2013年12月17日 16:01:50   作者:  
这篇文章主要介绍了C#自动给文章关键字加链接实现代码,有需要的朋友可以参考一下

主要做的是,文章中的关键字标签加上链接,网上也有很多解决办法,自己整理以便后续在用。

效果如图:

下面是代码:

复制代码 代码如下:

/// <summary>
        /// 内联
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        public string ReplaceTextTag(string content)
        {
            A  a = new A();
            string result = "";
            if (!string.IsNullOrEmpty(content))
            {
                //标签
                List<Tag> listAll = a .GetTag(); 获取标签也就是所谓的关键字
                string str1 = content;
                result = keyAddUrl(str1, listAll);
            }
            return result;
        }
        /// <summary>
        /// 加title,加链接
        /// </summary>
        /// <param name="src"></param>
        /// <param name="keys"></param>
        /// <returns></returns>
        private string keyAddUrl(string src, List<TopicTag> 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].Label) + @"|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!" + Regex.Escape(keys[i].Label) + @"|</?a\b).)*)(?<tag>" + Regex.Escape(keys[i].Label) + @")",
                        @"$1<a href=""http://cn.greatexportimport.com/topic-" + keys[i].Id + @""" target=""_blank"" title=""${tag}"">${tag}</a>");
                    if (length != temp.Length)
                    {
                        keys.Remove(keys[i]);
                    }
                    length = temp.Length;
                }
                return temp;
            });
        }

在页面调用此方法即可:<p><%=Tag.ReplaceTextTag(Tag.Contents)%></p><br />

相关文章

  • c# 插入数据效率测试(mongodb)

    c# 插入数据效率测试(mongodb)

    这篇文章主要介绍了c# 插入数据效率测试(mongodb),插入的速度要比Mysql和sqlserver都要快需要的朋友可以参考下
    2018-03-03
  • 详解C#设计模式编程中生成器模式的使用

    详解C#设计模式编程中生成器模式的使用

    这篇文章主要介绍了详解C#设计模式编程中生成器模式的使用,生成器模式主张创建对象的过程和对象的表现应该分离开来,需要的朋友可以参考下
    2016-02-02
  • c# 在Emit代码中如何await一个异步方法

    c# 在Emit代码中如何await一个异步方法

    这篇文章主要介绍了c# 在Emit代码中如何await一个异步方法,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#使用带like的sql语句时防sql注入的方法

    C#使用带like的sql语句时防sql注入的方法

    这篇文章主要介绍了C#使用带like的sql语句时防sql注入的方法,采用了一个比较简单的字符串过滤方法就可以有效提高sql语句的安全性,防止sql注入,需要的朋友可以参考下
    2014-09-09
  • WinForm之BindingSource基础操作实例教程

    WinForm之BindingSource基础操作实例教程

    这篇文章主要介绍了WinForm之BindingSource基础操作,对BindingSource组建的用法进行较为深入的实例分析,需要的朋友可以参考下
    2014-08-08
  • java和c#使用hessian通信的方法

    java和c#使用hessian通信的方法

    这篇文章主要介绍了java和c#使用hessian通信的方法,服务器端为Java,客户端为C#实现。是一个非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • DataTables List互相转换的实现类示例

    DataTables List互相转换的实现类示例

    这篇文章主要介绍了将DataTable转换为List,将List转换为DataTable的实现类实例方法,大家参考使用吧
    2013-11-11
  • windows系统下,如何在C#程序中自动安装字体

    windows系统下,如何在C#程序中自动安装字体

    在Windows系统中,原有自带的字体样式有限,有时候我们的程序会使用到个别稀有或系统不自带的字体。因此我们需要将字体打包到程序中,当程序启动时,检测系统是否有该字体,如果没有则安装该字体,也可以动态加载字体。
    2020-11-11
  • 带你一文了解C#中的Expression

    带你一文了解C#中的Expression

    c#中有Expression,即表达式,通过Expression可以动态构造代码,并编译执行,下面这篇文章主要给大家介绍了关于C#中Expression的相关资料,需要的朋友可以参考下
    2021-12-12
  • C# 如何实现一个基于值相等性比较的字典

    C# 如何实现一个基于值相等性比较的字典

    这篇文章主要介绍了C# 如何实现一个基于值相等性比较的字典,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-02-02

最新评论