查找并返回包含字符的行
还未解决~再研究写了一个函数将指定目录下的exe文件写入变量$str中,现想查看并返回包含字符(假设为aa.exe)的行,如何处理?
#include <Timers.au3>
$str=""
$DirName="f:\start"
$ext="*.*"
$starttime = _Timer_Init()
_listview($DirName,$ext)
$time=_Timer_Diff($starttime)
MsgBox(0,$time,$str)
Func _listview($Dir,$ext)
Local $FHandle,$FFileName
If StringRight($Dir, 1) <> '\' Then $Dir = $DirName & '\'
$FHandle = FileFindFirstFile($Dir & $ext)
;~ If $FHandle = -1 Then Return -1
While True
$FFileName = FileFindNextFile($FHandle)
If @error Then ExitLoop
If $FFileName = '.' Or $FFileName = '..' Then ContinueLoop
If StringInStr(FileGetAttrib($Dir & $FFileName), 'D') Then
_listview($Dir & $FFileName & "\","*.exe")
Else
If StringRight($FFileName,3)="exe"Then $str &= $Dir & $FFileName& ""
EndIf
WEnd
FileClose($FFileName)
EndFunc
[ 本帖最后由 stjie 于 2009-1-19 15:52 编辑 ] 虽然没看懂你的意思 但是看标题
StringReplace 原帖由 sxd 于 2009-1-15 16:03 发表 http://www.autoitx.com/images/common/back.gif
虽然没看懂你的意思 但是看标题
StringReplace
可以表述的不太好,假设我的函数$str返回了以下内容,我想在这变量中查找并返回包含c字符的行给另外的变量$a使用($a=1111111c2222222),如何实现呢?
1111111a2222222
1111111b2222222
1111111c2222222
1111111d2222222
1111111e2222222
1111111f2222222 额 我错了 应该是StringInStr呵呵
$replace = StringInStr($str, "c")
If $replace <> 0 Then
$a = $str
EndIf
如果你要找更复杂的条件 那就要StringRegExp 了 可能还是我没说明白,已经假设了我的$str已经包含以下的内容:
1111111a2222222
1111111b2222222
1111111c2222222
1111111d2222222
1111111e2222222
1111111f2222222
你的方法只能判断存不存在而已,并没办法取回包含字符的行,至于提供的StringRegExp我就不熟啦,弄N久啦都没成功,似乎是没有办法这样去弄? 那就笨一点的办法 每一行读到一个变量里再检查变量里是否含有 有的话就取那个变量 原帖由 sxd 于 2009-1-16 00:18 发表 http://www.autoitx.com/images/common/back.gif
那就笨一点的办法 每一行读到一个变量里再检查变量里是否含有 有的话就取那个变量
这方法虽可行,但多起来的话这不是最简洁的方式。所以我才考虑与到变量中,就是想看看有没有办法通过查找字符串的方式来找寻特定的行。看大伙哪位能挤出个方法来? FileClose($FFileName)这句,
在哪里打开的文件我都没看出来。 原帖由 顽固不化 于 2009-1-16 09:07 发表 http://www.autoitx.com/images/common/back.gif
FileClose($FFileName)这句,
在哪里打开的文件我都没看出来。
我想他是想关闭句柄 写错了 FileClose($FHandle) 原帖由 sxd 于 2009-1-16 10:12 发表 http://www.autoitx.com/images/common/back.gif
我想他是想关闭句柄 写错了 FileClose($FHandle)
帮助例子提供的:
; Shows the filenames of all files in the current directory.
$search = FileFindFirstFile("*.*")
; Check if the search was successful
If $search = -1 Then
MsgBox(0, "Error", "No files/directories matched the search pattern")
Exit
EndIf
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
MsgBox(4096, "File:", $file)
WEnd
; Close the search handle
FileClose($search) $FHandle = FileFindFirstFile($Dir & $ext)
$FFileName = FileFindNextFile($FHandle)
应该关闭$FHandle而不是关闭 $FFileName 原帖由 sxd 于 2009-1-16 10:47 发表 http://www.autoitx.com/images/common/back.gif
$FHandle = FileFindFirstFile($Dir & $ext)
$FFileName = FileFindNextFile($FHandle)
应该关闭$FHandle而不是关闭 $FFileName
谢谢更正,不过问题还是没有解决? 可以表述的不太好,假设我的函数$str返回了以下内容,我想在这变量中查找并返回包含c字符的行给另外的变量$a使用($a=1111111c2222222),如何实现呢?
1111111a2222222
1111111b2222222
1111111c2222222
1111111d2222222
1111111e2222222
1111111f2222222
下面是找出中间含字母C的正则式,不过只找出第一个,要找出全部合条件的修改一下即可
$a = stringregexp($str, '(?U)\w*c\w*', 1, 1) 学习,脚印。。。。。。。。。。
页:
[1]