请问如何在文本中删除指定行
请问有没有相关的函数用来删除已打开的txt文本中的指定行。麻烦告知,多谢! #Include <File.au3>
_FileWriteToLine($sFile, $iLine, '', 1) 不好意思,都怪我没有表达清楚.
应该是删除一个不规则的ini文件的某一行,前提下我不知道行号,只知道那一行的关键字。
如:
d1,ss2000r.icm
d1,ss2500r.icm
d1,ss2500t.icm
d1,ss3dfo.scr
d1,ssbezier.scr
而我希望删除其中的:
d1,ss3dfo.scr
用了inidelete() 也不行。
多谢指点!! _filereadtoarray("*.ini",$aArray)
$i = _Arraysearch($aArray, $key, , , ,1)
_arraydelete($aArray, $i)
_FileWriteFromArray("*.ini", $aArray, 1)
写入前要把ini清空 本帖最后由 sky808 于 2009-9-22 08:42 编辑
要命啊,这个文件里成千上万行,里面的内容也很重要.
不能直接删除含关键字行吗?要从新写ini文件就很大工程了。 成千上万也得这样,改写文件大都如此 本帖最后由 netegg 于 2009-9-22 09:12 编辑
5# sky808
改成数组已经不错了,要是给你做个无定义循环,你就慢慢查错吧,倒是可以给你个思路,你自己斟酌着用
$i = 1
do
$line =filereadline($file, $i)
if stringinstr($line, $string) <> 0 then
_filewritetoline($file , $i,"", 1)
endif
$i+=1
until @error
不过先说明下,这样里面是有空行的 本帖最后由 afan 于 2009-9-22 13:37 编辑
直接删除含关键字行也可以(注:这里应该不叫关键字了,应该是完整的值,及整行)_filereadtoarray("ini文件.ini",$aArray)
_FileWriteToLine("ini文件.ini", _Arraysearch($aArray, '关键字'), '', 1)如果关键字不止一处加个循环即可。 嗯,多谢楼上的朋友指点! 8# afan
这样不是太好吧,为什么不在array里直接处理,然后索性)filewritefromarray 要么转到数组里处理 要么建2个文件 读一行 判断一行 写一行 11# sxd
我的意思是直接读入数组然后清空文件,在数组里处理完成后,重新写入 12# netegg
嗯啊 是啊 使用数组处理,绝对会存在效率问题。可能应用在这个问题中不会显现出来,但如果文本行数到了上百万行,就会很明显了。因为FileWriteFromArray是遍历数组,如果数组有1000万个元素,就要循环1000万次,效率可想而知了。如果没有特殊需求,StringReplace是最简单的。 使用数组处理,绝对会存在效率问题。可能应用在这个问题中不会显现出来,但如果文本行数到了上百万行,就会很明显了。因为FileWriteFromArray是遍历数组,如果数组有1000万个元素,就要循环1000万次,效率可想而知了 ...
pusofalse 发表于 2009-9-23 23:36 http://www.autoitx.com/images/common/back.gif
经测试,使用 StringReplace 效率高了N倍~ 多谢指正~!
页:
[1]
2