【原创源码】(03):利用简单递归算法,实现文本匹配、翻译。
欢迎大家发表意见(漏洞,性能等)。在博客园社区以外转载,请注明作者和出处。谢谢!
今天修改代码生成器解决了一个问题,偷懒将代码制作成Demo公开,换随笔,嘿嘿。
现在的需求是这样的:
1》用正则表达式解析出键值对:
输入:
<%@ TableOwner="dbo" %>
<%@ TableName="Demo" %>
输出:
一个Hashtable
方法:
2》插播一个在Hashtable中找键的方法:
3》将代码引用到的局部变量,匹配翻译成Hashtable中的值,换算输出:
输入:
CREATE PROCEDURE <%= OwnerString %>.<%= Prefix %><%= TableName %>_Insert2
输出:
CREATE PROCEDURE dbo.usp_Demo_Insert2
方法:
4》匹配算法的调用:
5》总结:
之所以使用递归算法实现。是希望每找到一个局部变量后,不再从头寻找。而是直接在新的起点处(nextTarget)搜索匹配。避免不必要的重复搜索。
第一次搜索的时候,制定搜索开始为0(this.rtbCode.Text = this.GetAttribute(this._Text, 0, this._KeysHash);)
当全文不再有局部变量需要替换的时候:递归算法必须退出!!
6》另外一个特别之处是,使用了一个特别常量:
7》源代码下载地址:https://files.cnblogs.com/ClarkChan/TextMatch_061117.rar
注意勿删此文件TextMatch2006\TextMatch\bin\Debug\Templates\Sql.txt,运行Demo必须。
Demo很简单,高手路过就好~~随笔也写的粗糙,不明白的,看代码吧。
注意!在博客园社区以外转载,必须注明:
作者:Clark Chan
和原文出处:http://clarkchan.cnblogs.com/
否则谢绝转载!