VB程序设计——文本修改前后对照(程序与源文件)

作者在 2023-06-21 12:05:09 发布以下内容
“文本比对程序”可以用来观察、对照2个文本之间的差异——【展示差异】。比如“文本修改前后对照”、“样张与打字文本的对照”等等。程序先要“搜索差异”、“储存差异”才能“展示差异”。
主程序是CmdMore ,用于“搜索差异”和“储存差异”
    它跟递归函数LCS()的结构很像,只是增加了关于 QS()、CD() 的2个数组。为什么要用这2个数组呢?因为,我们要想“展示差异”,就需要【知道】各个差异的“位置”(起始位置QS)和各个差异的“长度”(CD)。这样,当程序在上下两边的“原文档”里自动选中了“差异字符串”时,就会非常醒目。
(这个部分的设计思路、流程图等等,可以参看我在本网站的博文(nhjsjjs):2021-06-18  [文本比对在中文打字评分中的应用……第二部分])。
    至于“展示差异”,那就相对容易了。相应的程序块也比较简单。我用了2个方式来【展示差异】。1是当你“选中一个彩色的字符”(不属于公共子序列的字)时,程序会★自动选中两边的“差异块”。如果选中的是“将删除的字(绿色)”或者“新添加的字(蓝色)”,程序还会在“另一边”★对应的位置“闪烁”3次。
2 ★是用一个“差异清单”来记录全部的差异。如果我们用肉眼去搜索“彩色字符”,难免会有疏漏,尤其像【分段、合并段落】并没有颜色显示。而“清单”可以使任何细小的差异都“无所遁形”,而且可以“指哪达哪”,即使差异点不在当前窗口,也会被“揪出来”。
注:这个程序把“回车”看作是2个字。(它的确是2个看不见的字)。有时候,在“清单”里面有“添加2”,有可能是添加了1个“回车”(分段)(  “删除 2 ” 也可能是删除了1个“回车”(合并段)★注意插图中,文本的第1段。)
  ★特别注意:因为有大量的递归动作,所以用时较多(几十个字的话,还感觉不到)。我的例子是两边各400字左右,耗时近 6 秒。文本越长,计算所花的时间就越长。(近千字的话,要几分钟的时间,需耐心等待,这是一个“瓶颈”!)
因为有“源文件”(都是些常用的语句),读者可以试试能不能改进一下,有所突破。欢迎指出错误和不妥,望提出意见和建议,盼共同商榷与探讨。
文本修改前后对照.png (上传于2023-06-21 12:05:09)
文本修改前后对照.png


默认分类 | 阅读 958 次
文章评论,共0条
游客请输入验证码
浏览96243次
文章分类