【原创源码】(03):利用简单递归算法,实现文本匹配、翻译。

欢迎大家发表意见(漏洞,性能等)。在博客园社区以外转载请注明作者和出处。谢谢

今天修改代码生成器解决了一个问题,偷懒将代码制作成Demo公开,换随笔,嘿嘿。

现在的需求是这样的:
1》用正则表达式解析出键值对:
输入:
<%@ TableOwner="dbo" %>
<%@ TableName="Demo" %>
输出:
一个Hashtable
方法:

【原创源码】(03):利用简单递归算法,实现文本匹配、翻译。public Hashtable GetWords(string text)
        }

2》插播一个在Hashtable中找键的方法:
【原创源码】(03):利用简单递归算法,实现文本匹配、翻译。public string GetStringFromHashtable(string search, Hashtable hash)
        }

3》将代码引用到的局部变量,匹配翻译成Hashtable中的值,换算输出:
输入:
CREATE PROCEDURE <%= OwnerString %>.<%= Prefix %><%= TableName %>_Insert2
输出:
CREATE PROCEDURE dbo.usp_Demo_Insert2
方法:
【原创源码】(03):利用简单递归算法,实现文本匹配、翻译。public string GetAttribute(string text, int target, Hashtable hash)
        }

4》匹配算法的调用:
【原创源码】(03):利用简单递归算法,实现文本匹配、翻译。 private void button1_Click(object sender, EventArgs e)
        }


5》总结:
            之所以使用递归算法实现。是希望每找到一个局部变量后,不再从头寻找。而是直接在新的起点处(nextTarget)搜索匹配。避免不必要的重复搜索。
            第一次搜索的时候,制定搜索开始为0(this.rtbCode.Text =  this.GetAttribute(this._Text, 0, this._KeysHash);)
            当全文不再有局部变量需要替换的时候:递归算法必须退出!!
【原创源码】(03):利用简单递归算法,实现文本匹配、翻译。if (String.IsNullOrEmpty(key))
            }

6》另外一个特别之处是,使用了一个特别常量:
【原创源码】(03):利用简单递归算法,实现文本匹配、翻译。string constString = "123456789";
具体作用,自己体会代码,在文本较大的时候,能提高一半效率。


7》源代码下载地址:https://files.cnblogs.com/ClarkChan/TextMatch_061117.rar
注意勿删此文件TextMatch2006\TextMatch\bin\Debug\Templates\Sql.txt,运行Demo必须。
Demo很简单,高手路过就好~~随笔也写的粗糙,不明白的,看代码吧。


注意!在博客园社区以外转载,必须注明:
作者:Clark Chan
和原文出处:http://clarkchan.cnblogs.com/
否则谢绝转载!

相关文章:

  • 2022-12-23
  • 2021-11-20
  • 2022-12-23
  • 2022-02-19
  • 2021-10-21
  • 2021-10-22
  • 2022-12-23
猜你喜欢
  • 2021-09-04
  • 2021-12-28
  • 2021-12-03
  • 2022-12-23
  • 2022-03-05
  • 2022-12-23
相关资源
相似解决方案