查找字符串在ini或TXT文件中的行号
我需要查找字符串('123'),在文本(1.ini)中位于多少行,现在是这样写的$str ='123'
local $line = 0
while 1
$strline = fileReadLine('1.ini',$line) ;读取第$line行字符串
$line =$line +1
ifstringinstr($strline,$str,0) <> 0 then 如果$str('123')在这行字符串中
msgbox(0,'',$line) 显示行号
end if
wend
效率太低了,3-5秒才有反应,因为文本差不多有上万行,有没有效率更高一点的办法?ini结构如下,可以改
s=dadjoaoifdjiaop
a=12343545646
b=11111
s=uopuiopuop
b=iop[iopp[
c=op[iuopyopi Ini 里面的内容放到txt里面也行 Ini 里面的内容放到txt里面也行 不知道你到底要干什么 回 netegg
我有个文本文档
112233
445566
778899
qqwwee
aaasss
zzzxxxccc
qqqwww
然后有个字符串'qw'
我需要搜索字符串在这个文本文档里面,是第多少行 用循环的方法是没有问题,但是内容比较多,返回的时间太长了 本帖最后由 netegg 于 2015-4-22 12:39 编辑
如果没理解错的话,你的目的类似于数组的非全匹配查询 111111
222222222
3333333
44444444444
55555555
请问'33'在第几行? 已经用数组的方法完美解决了,过后贴上代码 不知樓主是否能提供有效率的数组的解法?
我也正在做相同的東西.
謝謝. 已经用数组的方法完美解决了,过后贴上代码
505807698 发表于 2015-4-22 17:22 http://www.autoitx.com/images/common/back.gif
全部读出到数组,再匹配? 楼主试一下这个非常规的方法!
$f = FileOpen(@ScriptDir & "\123.txt", 10)
For $i = 1 To 100000
If $i = 99958 Then
FileWriteLine($f, Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & "qw" & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)))
Else
FileWriteLine($f, Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)) & Chr(Random(48, 57, 1)))
EndIf
Next
FileClose($f)
$n = MsgBox(1, "", "10W文本生成完毕,现在开始计时" & @CRLF & "按确定开始")
If $n = 1 Then
$time = TimerInit()
$c = FileRead(@ScriptDir & "\123.txt")
$num = StringInStr($c, "qw")
$str = StringLeft($c, $num)
StringReplace($str, @CRLF, "")
$t = TimerDiff($time)
MsgBox(0, "", "qw所在的行是" & @extended + 1 & @CRLF & "所用时间:" & $t & "ms")
EndIf 我後來使用這裡的方法.
http://www.autoitx.com/forum.php?mod=viewthread&tid=29824
{:face (317):}
页:
[1]