一个页面标题和过滤输出的解决方案(下)

上一篇说到:为了可扩展与方便大伙,我定义了一个抽象类,先实现了三个正则用于截取标题,说明,和关键字。

抽象类代码简洁如下:

05233303_Ulw5.gif
public abstract class ReplaceTextListBase
    {
        /// 
< summary >
        /// 将被返回的替换文本集合列表
        /// 
</ summary >
        public Dictionary
< string , string >  replaceTextList = new Dictionary < string , string > ();
        /// 
< summary >
        /// 获取当前请求页面的url信息
        /// 
</ summary >
        public Uri PageUrl { get { return HttpContext.Current.Request.Url; } }
        /// 
< summary >
        /// 获取html的title的正则
        /// 
</ summary >
        public string TitleRegex { get { return "
< title. * > .* </ title > "; } }
        public string TitleFormat(string titleText)
        {
            return "
< title > " + titleText + " </ title > ";
        }
        /// 
< summary >
        /// 获取html的Description的正则
        /// 
</ summary >
        public string DescriptionRegex { get { return "
< meta [^< > ]+name=[\"\']description[^ <> ]*[/]>"; } }
        public string DescriptionFormat(string descriptionText)
        {
            return "
< meta  id =\"description\"  name =\"description\"  content =\""  + descriptionText + "\"  /> ";
        }
        /// 
< summary >
        /// 获取html的Keyword的正则
        /// 
</ summary >
        public string KeywordRegex { get { return "
< meta [^< > ]+name=[\"\']keywords[^ <> ]*[/]>"; } }
        public string KeywordFormat(string keywordText)
        {
            return "
< meta  id =\"keywords\"  name =\"keywords\"  content =\""  + keywordText + "\"  /> ";
        }
        /// 
< summary >
        /// 复写此方法,调用replaceTextList.add()方法后,return replaceTextList;
        /// 
</ summary >
        /// 
< returns ></ returns >
        public virtual Dictionary
< string , string >  GetReplaceTextList()
        {
            return replaceTextList;
        }
    }

 

 

抽象类后,留下一个虚方法GetReplaceTextList(), 这是重点

现在看一下我的示例中的子类的实现,继承自抽象类,复写虚方法:

05233303_Ulw5.gif
public   class  ReplaceTextList:ReplaceTextListBase
{
        
public   override  System.Collections.Generic.Dictionary < string string >  GetReplaceTextList()
        {
            replaceTextList.Add(TitleRegex,TitleFormat(
" TitleRegex " ));
            replaceTextList.Add(DescriptionRegex,DescriptionFormat(
" descriptionttest " ));
            replaceTextList.Add(KeywordRegex,KeywordFormat(
" keywordadfdfdf " ));
            
return  replaceTextList;
        }
}

 

代码解析:

例子中的子类实现很简单,就复写了一个虚方法,最终页面的输出标题为:TitleRegex。其它两个同理。
如果要替换其它或过滤文件,只要写多几个add方法把要替换的文字给替换掉就行了,具体也可以结合下数据库或其它文件操作

 

另外说明:

例子上,直接就定死了标题输出为:TitleRegex,这里可以结合自己的需要,替换成任意字符串。

提示:抽象类里还留下了PageUr吧,可以根据Url查出Title和description和keyword来实现自己的扩展。

 

 

另外给出一些我早期实现的思路:

建数据库表,对url主机头进行分类管理,自己定义替换字符等,最后查询与替换。

转载于:https://my.oschina.net/secyaher/blog/274113

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值