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

简介:

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

抽象类代码简洁如下:

复制代码
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(), 这是重点

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

复制代码
public  class ReplaceTextList:ReplaceTextListBase
{
         public  override System.Collections.Generic.Dictionary< stringstring> 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主机头进行分类管理,自己定义替换字符等,最后查询与替换。

相关文章
|
3月前
|
SQL 开发框架 前端开发
在Winform系统开发中,对表格列表中的内容进行分组展示
在Winform系统开发中,对表格列表中的内容进行分组展示
|
6月前
解决设置了标签的最大行数,更新标签的内容为富文本内容,导致超过最大行数不显示...问题
解决设置了标签的最大行数,更新标签的内容为富文本内容,导致超过最大行数不显示...问题
31 0
|
SQL JavaScript 前端开发
信息输出:搜索和分析
信息输出:搜索和分析
54 0
|
缓存 开发者
微博分享代码怎么显示自定义来源
很久以前(百度分享好用的时候)这个网站一直在用百度分享代码,但是不知道从什么时候开始,百度关闭的分享代码的官方,虽然之前的分享代码还是可以用的,但是总有一种岌岌可危的感觉,就怕那天突然关闭界面,网站没有分享。
132 0
微博分享代码怎么显示自定义来源
“关联表单”组件文本数据筛选只支持包含条件的解决方案
在“关联表单”中使用数据筛选功能筛选文本时条件只有”包含“,此文章通过增加一个”下拉单选“组件,变相解决这个问题。
198 0
|
小程序 开发者
小程序__02--navigationBarTitleText配置子页面标题,依旧显示默认标题,子页面配置不显示
navigationBarTitleText配置子页面标题,依旧显示默认标题,子页面配置不显示
Word 技术篇-文档中不同级别标题自动重新编号设置方法,论文多级编号演示
Word 技术篇-文档中不同级别标题自动重新编号设置方法,论文多级编号演示
1406 0
Word 技术篇-文档中不同级别标题自动重新编号设置方法,论文多级编号演示
|
Web App开发 缓存 网络协议
网页页面下各种标签的含义
1、charset: 2、X-UA-Compatible: 3、canonical : 4、dns-prefetch: 5、keywords 6、viewport 7、description
159 0
条码标签打印软件如何实现标签重复打印
重复打印是批量打印中的一种重要的打印方式。在批量打印条码、标签、图片的时候经常会遇到,把同一个标签重复打印多份,或者是把同一张标签纸重复打印多张。那么在条码标签打印软件中如何实现重复打印的呢?下面介绍两种重复打印的方式。
2142 0
下一篇
无影云桌面