/关键字加链接 重点词加粗

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.IO;
using System.Net;
using System.Text;

public partial class KeyWord : System.Web.UI.Page
{

    //关键字加链接 重点词加粗
    protected void Page_Load(object sender, EventArgs e)
    {
        //rc();


        Page.Title = GetSinaWeather();
    }

    #region 方法 RemoveHtmlCode(string strCode)
    /// <summary>
    /// 去除HTML格式符
    /// </summary>
    /// <param name="strCode"></param>
    /// <returns></returns>
    public string RemoveHtmlCode(string strCode)
    {
        return System.Text.RegularExpressions.Regex.Replace(strCode, "<[^>]+>", "", RegexOptions.Multiline).Trim();
    }
    #endregion

    #region 方法  GetSinaWeather() 获得sina天气
    /// <summary>
    /// 远程获取新浪网天气
    /// </summary>
    public  string GetSinaWeather()
    {
        
        string strUrl = get_Html("http://www.sina.com.cn/iframe/2008/weather/440101.html", 10000, 0, System.Text.Encoding.Default);
        string strReg = "<title>[\\s\\S]*?</title>";
        string strMove = System.Text.RegularExpressions.Regex.Replace(strUrl, strReg, " ", RegexOptions.IgnoreCase);
        return RemoveHtmlCode(strMove).Replace("广州", "");
    }
    #endregion    


    #region 函数 string get_Html(string strUrl, int timeout, int enterType) 获取网页内容
    /// <summary>
    /// 获取指定远程网页内容
    /// </summary>
    /// <param name="strUrl">所要查找的远程网页地址</param>
    /// <param name="timeout">超时时长设置,一般设置为8000</param>
    /// <param name="enterType">是否输出换行符,0不输出,1输出文本框换行</param>
    /// <returns>以文本方式返回截获的目标页源文件</returns>
    /// <param name="encoding">编码方式</param>
    public  string get_Html(string strUrl, int timeout, int enterType, Encoding encoding)
    {
        string strResult;
        try
        {
            HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl);
            myReq.Timeout = timeout;
            HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
            Stream myStream = HttpWResp.GetResponseStream();
            strResult = myStream.ToString();
            StreamReader sr = new StreamReader(myStream, encoding);
            strResult = sr.ReadToEnd();
        }
        catch (Exception err)
        {
            strResult = "请求错误:" + err.Message;
        }
        return strResult;
    }
    #endregion

    #region 静态公共方法 RemoveHeadFootCode(string strCode)去掉前后一个字符
    /// <summary>
    /// 去掉前后一个字符Substring(0,st1.Length-1);   
    /// </summary>
    /// <param name="strCode"></param>
    /// <returns></returns>
    public  string RemoveHeadFootCode(string strCode)
    {
        string strHeadCode = strCode != string.Empty ? strCode.Substring(1) : ""; ;
        return (strHeadCode != string.Empty ? strHeadCode.Remove(strHeadCode.Length - 1) : "");
    }
    #endregion

    private void rc()
    {
        string str1 = "bb <a href=\"bbb\" title='网络'>网络</a> 网络技术网络; bb 网络应用 网络基本知识 网络技术网络;网络应用 网络基本知识 bb";

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


        keys.Add("bb$http://www.999brain.com");
        keys.Add("网络技术网络$http://www.网络技术网络.com");
        string result = keyAddUrl(str1, keys);
        this.Label1.Text = result;

    }

    
    /// <summary>
    /// 给关键字加链接,同一关键字只加一次
    /// </summary>
    /// <param name="src">源字符串</param>
    /// <param name="keys">关键字泛型</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--)
        //    {
        //        string[] keyword = keys[i].Split('$');
        //        temp = Regex.Replace(temp, @"(?is)^((?:(?:(?!" + Regex.Escape(keyword[0]) + @"|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!" + Regex.Escape(keyword[0]) + @"|</?a\b).)*)(?<tag>" + Regex.Escape(keyword[0]) + @")", @"$1<b>${tag}</b>");
               
        //        length = temp.Length;
        //    }
        //    return temp;
        //});

        temp = src;
        length = temp.Length;
       
            string[] keyword = keys[0].Split('$');
            temp = Regex.Replace(temp, @"(?is)^((?:(?:(?!" + Regex.Escape(keyword[0]) + @"|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!" + Regex.Escape(keyword[0]) + @"|</?a\b).)*)(?<tag>" + Regex.Escape(keyword[0]) + @")", @"$1<b>${tag}</b>");

            length = temp.Length;
      
        return temp;
    

    }


    protected void btnOk_Click(object sender, EventArgs e)
    {

    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值