文本比较把我难住了! 一个段有格式的文本先存成一个文本文件,如果当这个这段文字中相应位置有些内容有变化,用什么方法快速找到发生变化的内容??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 折半比较:A(100),B(100)if A(1...50)=B(1..50) then ‘首先看前面一半的内容是否相同,如果相同,就看后一半, if A(51...75)=B(51...75) then .... end ifelse if A(1...25)=B(1...25) .... end ifend if 思想类似与折半查找!如果改动的地方很少,那么折半比较比一个一个比较快很多很多如果你的字符长度为1M,只有一出改动用普通的方法你要比较1000000/2次(平均)如果用折半比较最多需要20次 谢谢hudan(55555)提供一个好思路,不过我现在正在考虑怎么找到内容变化的那个起始位置和末尾位置。还有两次比较的文本字节长度可能不一样哦 用input filename1 for input as #1 和 input filenuma2 for input as #2 将两个文本文件打开,然后用input #1,f1$ 和 input #2,f2$来分别读取.再用f1$<>f2$来比较. 这个问题不是很简单,有点模糊算法或人工智能的意思,因为有些不同的地方人眼一下就能看出来,但计算机却很难判断,几年前我们有人用汇编实现过,花了两年多时间才完善,我用VB改写了一下,用了半年的时间才算完善,可以比较出文本比源文本哪些地方不同,哪些地方多了几个字,哪些地方少了几个字,并用不同的颜色显示出来。有兴趣的话可以交流一下:[email protected] 可以的话,改变之前存一个,变之后存一个,然后shell用FC比较,应该很快. 我这里有一个 dll 文件,可以返回发生变化的内容,并且给出类似率。 还有一个方法,就是借用 Word 中的比较文件方法,然后遍历修改过的地方(插入和删除)。用 VB A就可以实现! 看来要举个实际例子来说说 第一个文件<html> <head> <tltle>123</title> </head> <body> abc 777 </body></html>第二个文件<html> <head> <tltle>123</title> </head> <body> abc888 777 999 </body></html>可以看到第二个文件的abc后面多了个888而且777下面多了一行999 通过程序怎么找到这两个变化如果采用行比较的话因为第二个文件多了一行和第一行没法对应?所以即使勉强比较则会把第一个文件的</body>和第二个文件的999相比较,这当然不是我想要的结果,因为第二个文件实际有</body>, 我想要的结果是 把888 和 999这个两个变化的内容提出来。请高手代码指点啊 lrb820102(荣) 的说法可以,但实际是没有意义的,不实用 word都要老老实实的用个临时文件进行比较和临时储存,我看太智能了没有必要吧? tiger322(tiger322) 把你的代码公布出来啊或者说说思路也好?难道非让我一个一个字节比较? 没想出有什么API好用,大概要用递归了 如果你就是只比较网页文件的话,那就好办了:用XMLDOM来处理就OK了,既方便又高效……… XMLDOM没用过 ,能介绍一下吗? 在网上搜索一下 fstrcmp ,你不会失望的 请问如何读取文件大小? 请教,如何才能最快判断数据库是否连接成功?急用,谢谢! 关于ADSI的问题 堆和栈有什么区别 WIN98里面调用DOS程序,使用CreateProcess,执行完后控制台不消失?? VB编程朗读中文 很急,MSHFlexGrid双击问题.因为是我新人,所以凡是回答问题的大哥,我都给分. 请问高手,这两段程序执行结果为什么不一样?(程序很短,很简单) 请教一个DAO的问题: 在MDIFORM中关闭子窗体时,鼠标变成了漏斗型,怎样设置才还原成箭头型? 有什么办法使Command变成”已经选择状态“吗? 如何屏蔽这些组合键?
A(100),B(100)if A(1...50)=B(1..50) then ‘首先看前面一半的内容是否相同,如果相同,就看后一半,
if A(51...75)=B(51...75) then
....
end if
else
if A(1...25)=B(1...25)
....
end if
end if
思想类似与折半查找!
如果改动的地方很少,那么折半比较比一个一个比较快很多很多如果你的字符长度为1M,只有一出改动
用普通的方法你要比较1000000/2次(平均)
如果用折半比较最多需要20次
第一个文件
<html>
<head>
<tltle>123</title>
</head>
<body>
abc
777
</body>
</html>
第二个文件
<html>
<head>
<tltle>123</title>
</head>
<body>
abc888
777
999
</body>
</html>
可以看到第二个文件的abc后面多了个888
而且777下面多了一行999 通过程序怎么找到这两个变化
如果采用行比较的话因为第二个文件多了一行和第一行没法对应?所以即使勉强比较则会把第一个文件的</body>和第二个文件的999相比较,这当然不是我想要的结果,因为第二个文件实际有</body>, 我想要的结果是 把888 和 999这个两个变化的内容提出来。请高手代码指点啊
把你的代码公布出来啊或者说说思路也好?
难道非让我一个一个字节比较?
用XMLDOM来处理就OK了,既方便又高效………