本帖最后由 waxy 于 2010-4-27 21:18 编辑
最近一直在论坛上逛,看到很多关于文本文件内容处理及替换的贴子,AU3高手们(afan、pusofalse 、水木子等)给很多不错的代码或思路,
(说真的也从中学到了点皮毛,新手还有很多东西看不懂,别笑我,呵呵)。但一直没遇这样一种情况的------比如有两个文本文件(A.txt&B.txt)
需要对他们的内容进行比较,把两个文件内容的不相同的地方读取出来生产第三个文件(C.txt),然后再查找第三个文件(C.txt)内容,如果C.txt中
存在某一特定字符串,给个提示“比如XXX不一致)。求解,谢谢!
再说明一下:可以确定文件内容的行数是相同的且只有一行或且两行有某一个字符串不一样(不会出现5楼chenronting 兄弟说的那种情况)。
把与原文件不一致那一行以及原文件(A.txt)所对应的那一行生成C.txt).如果A.txt与 B.txt两个文件的内容完全一致则程序不作任何输出自行结束。
假设A/B两个文本的内容如下:
A.txt 内容
张三:AABBCC
李四:CCBBAA
B.txt 内容
张三:AABBEE
李四:CCBBAA
那么C.txt输出的内容应该就是
张三:AABBCC
张三:AABBEE
论坛上有类似的代码(代码如下),但不能输出第三个文件,所以也办法通过查询C.txt文件内容,比如发现C.txt内容中有“张三”字符串(关键字),弹出窗口提示(比如“张三有误!”)#include <array.au3>
#include <file.au3>
Func _FileListCompare($hSouce,$hTarget)
Local $file1,$file2,$chayi[1]=[0]
_FileReadToArray($hSouce,$file1)
If @error Then
Return ''
SetError (-1)
EndIf
_FileReadToArray($hTarget,$file2)
If @error Then
Return ''
SetError (-2)
EndIf
If IsArray($file1) And IsArray($file2) Then
For $i=1 To $file1[0]
$a=_ArraySearch($file2,$file1[$i],1)
If $a=-1 And @error=6 Then
_ArrayAdd($chayi,$file1[$i])
$chayi[0] =UBound($chayi)-1
EndIf
Next
For $i=1 To $file2[0]
$a=_ArraySearch($file1,$file2[$i],1)
If $a=-1 And @error=6 Then
_ArrayAdd($chayi,$file2[$i])
$chayi[0] =UBound($chayi)-1
EndIf
Next
If $chayi[0]>0 Then
Return $chayi
EndIf
If $chayi[0]=0 Then
Return ''
EndIf
EndIf
EndFunc
$w=_FileListCompare('A.txt','B.txt')
_ArrayDisplay($w)
|