初学解释器模式(asp.net2.0) [序]

原创 2007年10月03日 11:42:00

学了几天的解释器模式,总要写点实际的东西 吧,至少跟解释有点关联的,想得太多,就是什么事情都做不了。

就开始试着解释cms 中的标签吧。

来点简单的标签替换先

default.aspx.cs源代码:

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

public partial class _Default : System.Web.UI.Page
...{
    
protected void Page_Load(object sender, EventArgs e)
    
...{
        
string strCms = this.txtCms.Text;       
        NewsInfo news 
= new NewsInfo(1"新闻内容", System.DateTime.Now);
        
// List<NewsInfo> arrNews = new List<NewsInfo>();
       
// arrNews.Add(news);
        string strPattern = @"<cms:News/s+property=""(/w+?)""/s+(?:format=""(/w+)""/s+)?/>";
        
string strRes = "";//Regex.Replace(strCms, strPattern, "$1" + "__" + "$2");
        
//Response.Write(strRes);
        MatchCollection arrMatches = Regex.Matches(strCms, strPattern, RegexOptions.IgnoreCase);
        
foreach (Match match in arrMatches)
        
...{
            strRes 
= NewsProp2Value(news,match.Groups[1].Value, match.Groups[2].Value);
            strCms 
= strCms.Replace(match.Value, strRes);
        }

        
this.txtRes.Text = strCms;
    }


    
/**//// <summary>
    
/// 将属性转成值
    
/// </summary>
    
/// <param name="property">属性名称</param>
    
/// <param name="format">格式</param>
    
/// <returns></returns>

    private string NewsProp2Value(NewsInfo news, string property, string format)
    
...{
        
try
        
...{
            
if (string.IsNullOrEmpty(format))
            
...{
                
return news.GetType().GetProperty(property).GetValue(news, null).ToString();
            }

            
else
            
...{
                
return string.Format("{0:"+format+"}",news.GetType().GetProperty(property).GetValue(news, null));
            }

        }

        
catch
        
...{
            
return "";
        }
        
    }

   
}

default.aspx,包换输入html及显示结果 源代码:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ValidateRequest="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
    输入:
<asp:TextBox ID="txtCms" runat="server" TextMode="MultiLine" Rows="15" Width="574px" Height="193px">sdfsdfsdf&lt;a href=&quot;&lt;cms:News property=&quot;Id&quot; /&gt;&quot;&gt;&lt;cms:News property=&quot;Content&quot; /&gt;  [&lt;cms:News property=&quot;InTime&quot; format=&quot;yyyyMMdd&quot; /&gt;]&lt;/a&gt;
</asp:TextBox>
        
<br />
    输出:
<asp:TextBox ID="txtRes" runat="server" TextMode="MultiLine" Height="118px" Width="571px"></asp:TextBox>
        
<br />
    
<asp:Button ID="btn" runat="server" Text="获取" />
    
</div>
    
</form>
</body>
</html>

App_code./NewInfo.cs源代码

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// News 的摘要说明
/// </summary>
public class NewsInfo
{
    private int _id;
    private string _content;
    private DateTime _inTime;
    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }
    public string Content
    {
        get { return _content; }
        set { _content = value; }
    }
    public DateTime InTime
    {
        get { return _inTime; }
        set { _inTime = value; }
    }
    public NewsInfo(int id, string content, DateTime inTime)
    {
        _id = id;
        _content = content;
        _inTime = inTime;
    }
}

 

初学解释器模式(asp.net2.0)

感觉csdn越来越慢啦,不看好SQLSERVER数据库,今天看到国人在清华大学出版的中 的一个实例,很简单,也写吧,不知道跟重构书中写的模板函数有什么区别,只能解释叁拾 壹拾 叁圆 壹圆default...
  • beimuaihui
  • beimuaihui
  • 2007年09月29日 10:57
  • 622

《Android源码设计模式解析与实战》读书笔记(十)——解释器模式

第十章 化繁为简的翻译机——解释器模式 解释器模式是一种用得比较少的行为型设计模式,它提供了一种解释语言或者说是表达式的方法,该模式定义了一个表达式接口,然后通过该接口解释一个特定的上下文。解释器模式...
  • zgcqflqinhao
  • zgcqflqinhao
  • 2017年05月15日 16:59
  • 290

解释器模式的一个应用

需求做产品的时候,有一个需求:对于一个字符串要在提交之前做校验,但是校验标准需要可配置。最合理的方案就是使用正则表达式+表达式组合。基础数据结构配置的数据结构如下package com.example...
  • pouloghost
  • pouloghost
  • 2015年11月04日 20:47
  • 1451

大话设计模式27----解释器模式

大话设计模式 1 解释器模式(interpreter)结构图 2 对解释器模式的一些解释 概念:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这...
  • qianqin_2014
  • qianqin_2014
  • 2016年07月26日 21:58
  • 346

Java设计模式之解释器模式

概述解释器模式是一种用得比较少的行为型模式.提供了一种解释语言的语法或表达式的方式. 通过定义一个表达式接口,解释一个特定的上下文.定义给定一个语言,解释器模式可以定义出其文法的一种表示,并定义一个...
  • wbwjx
  • wbwjx
  • 2016年09月07日 07:05
  • 1181

java/android 设计模式学习笔记(23)---解释器模式

这篇博客我们来介绍一下解释器模式(Interpreter Pattern),也是行为型设计模式之一,是一种用的比较少的设计模式,其提供了一种解释语言的语法或表达式的方式,该模式定义了一个表达式接口,通...
  • zhao_zepeng
  • zhao_zepeng
  • 2016年10月07日 17:40
  • 1170

设计模式(行为型)之解释器模式(Interpreter Pattern)

访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。访问者模式使得用户可以在不修改现有系...
  • yanbober
  • yanbober
  • 2015年05月06日 17:11
  • 3498

设计模式C++实现(20)——解释器模式

1. 解释器模式(Interpreter Pattern)的定义 (1)定义   给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。   ①文法:即...
  • zang141588761
  • zang141588761
  • 2016年12月06日 10:17
  • 382

C#设计模式之16——解释器模式

C#设计模式之16——解释器模式 有些程序受益于以一种语言来描述其能够执行的操作。解释器模式描述的内容通常包括:定义该种语言的语法,并使用这一语法来解释以该种语言做陈述的语句。 当某个程序要处理多...
  • weixingstudio
  • weixingstudio
  • 2012年03月02日 13:55
  • 2917

java 解释器模式

原文出处:http://blog.csdn.net/zhengzhb/article/details/7666020   定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用...
  • chenhuade85
  • chenhuade85
  • 2012年11月04日 22:45
  • 2168
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:初学解释器模式(asp.net2.0) [序]
举报原因:
原因补充:

(最多只允许输入30个字)