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

简介:

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

抽象类代码简洁如下:

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

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

复制代码
ExpandedBlockStart.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主机头进行分类管理,自己定义替换字符等,最后查询与替换。

相关文章
“关联表单”组件文本数据筛选只支持包含条件的解决方案
在“关联表单”中使用数据筛选功能筛选文本时条件只有”包含“,此文章通过增加一个”下拉单选“组件,变相解决这个问题。
151 0
|
缓存 开发者
微博分享代码怎么显示自定义来源
很久以前(百度分享好用的时候)这个网站一直在用百度分享代码,但是不知道从什么时候开始,百度关闭的分享代码的官方,虽然之前的分享代码还是可以用的,但是总有一种岌岌可危的感觉,就怕那天突然关闭界面,网站没有分享。
101 0
微博分享代码怎么显示自定义来源
|
小程序 开发者
小程序__02--navigationBarTitleText配置子页面标题,依旧显示默认标题,子页面配置不显示
navigationBarTitleText配置子页面标题,依旧显示默认标题,子页面配置不显示
|
Web App开发 缓存 网络协议
网页页面下各种标签的含义
1、charset: 2、X-UA-Compatible: 3、canonical : 4、dns-prefetch: 5、keywords 6、viewport 7、description
136 0
|
移动开发 Python
批量查找文本中的内容
@echo off findstr /ims "查找内容" *.*>list.txtps:把含有相关文字内容的文档输出到list.txt文本中,适用于能用notepad打开的各种文档.   是一个修改升级的版本,原程序是这个《批量查找替换文本文件内容》。
1021 0
Word 技术篇-文档中不同级别标题自动重新编号设置方法,论文多级编号演示
Word 技术篇-文档中不同级别标题自动重新编号设置方法,论文多级编号演示
1139 0
Word 技术篇-文档中不同级别标题自动重新编号设置方法,论文多级编号演示
条码标签打印软件如何实现标签重复打印
重复打印是批量打印中的一种重要的打印方式。在批量打印条码、标签、图片的时候经常会遇到,把同一个标签重复打印多份,或者是把同一张标签纸重复打印多张。那么在条码标签打印软件中如何实现重复打印的呢?下面介绍两种重复打印的方式。
2012 0
|
Web App开发 索引
文档预览功能使用技巧(2)---打印控制
智能媒体管理 提供了文档预览功能,通过 快速搭建 文章的介绍,详细描述了使用“文档转换 + JS 前端渲染引擎”实现文档预览的过程,本文将介绍预览功能中的打印控制(print=1 参数)技巧。
1940 0
|
移动开发 搜索推荐 数据采集
H5页面PC富文本内容自适应显示
有一段PC端显示的富文本HTML片段,在手机H5页面B区上加载显示
6892 0
|
Web App开发 XML JavaScript
一些实用的JQuery代码片段收集(筛选,搜索,样式,清除默认值,多选等) - 草稿
1. 如何创建嵌套的过滤器 //允许你减少集合中的匹配元素的过滤器, //只剩下那些与给定的选择器匹配的部分。在这种情况下, //查询删除了任何没(:not)有(:has) //包含class为“selected”(.selected)的子节点。
1018 0