找回密码
 加入
搜索
查看: 6800|回复: 15

[系统综合] 请教文本搜索的方法[已解决]

 火.. [复制链接]
发表于 2011-5-9 15:26:30 | 显示全部楼层 |阅读模式
本帖最后由 512guy 于 2011-5-17 16:27 编辑

最近一直有一个想法,但是没有找到合理的方法!这里想请教一下达人:

比如在某一个文件夹中有一个log文件,TXT格式的;我就想如何在不打开这个文本文件的情况下,搜索指定的内容,如果存在返回True,否则返回Flase.

不知道是否有达人了解过这样的方法,请指教!等。。。
发表于 2011-5-9 15:39:46 | 显示全部楼层
不打开怎么搜。。。

就算你用 FileRead ( "文件句柄/文件名" [, 数量] )  一样要打开

StringInStr ( FileRead ( "文件句柄/文件名" [, 数量] ) ,"子字符串" [, 区分大小写 [, 出现次序 [, 开始 [, 数量]]]] )
发表于 2011-5-9 16:06:20 | 显示全部楼层
你的意思是静默吗?(就是用户看不见)
如果 是 那用命令就可以了
如果 不是 那你能告送我你要干什么事情吗?不打开一个文件而知道文件内容,据我所知只能做索引。
 楼主| 发表于 2011-5-9 17:11:59 | 显示全部楼层
请教楼上的!命令如何做?可否给一个简单例子 !
发表于 2011-5-9 17:27:47 | 显示全部楼层
$file = FileOpen("123.txt", 0)
; 检查文件是否正常打开
If $file = -1 Then
    MsgBox(0, "错误", "无法打开目标文件。")
    Exit
EndIf
; 每次读取1个字符直到文件结尾(EOF,End-Of-File) 为止
$chars = FileRead($file)
MsgBox(0, "读到的字符:", $chars)
$result = StringInStr($chars, "9");你要搜索的信息填在这里哦
MsgBox(0, "123.txt文档中是否有你要搜索的信息,0就是没有", $result)
FileClose($file)
发表于 2011-5-9 18:07:02 | 显示全部楼层
学习学习!!
发表于 2011-5-12 01:33:19 | 显示全部楼层
本帖最后由 netegg 于 2011-5-12 01:34 编辑

_filereadtoarray好像不用打开文件(或者就是函数内部处理了), 搜索内容直接用_arraysearch
发表于 2011-5-12 09:31:19 | 显示全部楼层
Func _FileReadToArray($sFilePath, ByRef $aArray)
        Local $hFile = FileOpen($sFilePath, $FO_READ)
        If $hFile = -1 Then Return SetError(1, 0, 0);; unable to open the file
        ;; Read the file and remove any trailing white spaces
        Local $aFile = FileRead($hFile, FileGetSize($sFilePath))
;~         $aFile = StringStripWS($aFile, 2)
        ; remove last line separator if any at the end of the file
        If StringRight($aFile, 1) = @LF Then $aFile = StringTrimRight($aFile, 1)
        If StringRight($aFile, 1) = @CR Then $aFile = StringTrimRight($aFile, 1)
        FileClose($hFile)
        If StringInStr($aFile, @LF) Then
                $aArray = StringSplit(StringStripCR($aFile), @LF)
        ElseIf StringInStr($aFile, @CR) Then ;; @LF does not exist so split on the @CR
                $aArray = StringSplit($aFile, @CR)
        Else ;; unable to split the file
                If StringLen($aFile) Then
                        Dim $aArray[2] = [1, $aFile]
                Else
                        Return SetError(2, 0, 0)
                EndIf
        EndIf
        Return 1
EndFunc   ;==>_FileReadToArray
用打开的...
发表于 2011-5-12 14:23:40 | 显示全部楼层
回复 8# Ziya
嗯,回的时候没看源代码,所以才说可能内部处理了
发表于 2011-5-12 15:58:43 | 显示全部楼层
嗯,其实我就是好奇真有可能"不打开文件"么...
发表于 2011-5-12 20:25:08 | 显示全部楼层
回复 10# Ziya


    用fileread有打开和不打开一说吗?
发表于 2011-5-14 22:15:32 | 显示全部楼层
回复 1# 512guy


    都没有打开文件,你搜索什么啊??里面有什么内容都不知道,怎么比较?不打开和没有看见是两回事哦~~
发表于 2011-5-15 16:54:57 | 显示全部楼层
楼上说得对
 楼主| 发表于 2011-5-17 16:26:22 | 显示全部楼层
经过研究,我已经找到解决方法了,分享如下:
通过_FileReadToArray 将文本文件中的一行行内容付给一个数组;在使用StringInStr遍历每一个数组。
 楼主| 发表于 2011-5-17 16:26:27 | 显示全部楼层
经过研究,我已经找到解决方法了,分享如下:
通过_FileReadToArray 将文本文件中的一行行内容付给一个数组;在使用StringInStr遍历每一个数组。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-2 23:16 , Processed in 0.097428 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表