本帖最后由 gzh888666 于 2019-9-3 19:26 编辑 #include <array.au3>
$file = @ScriptDir & '\题库.txt'
$str = StringRegExp(FileRead($file), '(?m)^\V+', 3)
;_ArrayDisplay($str)
Global $number_delete =0
For $i = 0 To UBound($str) - 1
For $o = $i + 1 To UBound($str) - 1
If _NoStrChongFu($str[$i]) = _NoStrChongFu($str[$o]) And $i<>$o Then
_ArrayDelete($str, $o)
ReDim $str[UBound($str) + 1]
$number_delete += 1
EndIf
Next
Next
$htxt = FileOpen($file, 2)
For $i = 0 To UBound($str) - 1
FileWriteLine($htxt, $str[$i])
Next
FileClose($htxt)
MsgBox(0,"提示","提示:删除题库重复行共 "&$number_delete&" 条。")
Func _NoStrChongFu($string)
Local $txt = StringRegExpReplace($string, '(?sm)[^\x{4e00}-\x{9fff}]', '$1')
Return String($txt)
EndFunc ;==>_NoStrChongFu
将近5000行的文本,用时超过了10分钟,求一个效率算法,主要是中间的for循环太没有效率了。
已解决,效率比较高的应该就是字典了!~感谢zghwelcome的代码,15楼备注了annybaby 的帖子AU3之Script.Dictionary字典对象初探,感兴趣的坛友可以学习。 |