找回密码
 加入
搜索
查看: 1012|回复: 4

如何尋找關鍵字並將那些行刪除?

[复制链接]
发表于 2009-4-27 18:59:54 | 显示全部楼层 |阅读模式
本帖最后由 wongfung 于 2009-4-28 10:13 编辑

1.例如一個文件裏有:
------------------------
abc
4561632
758416
abcd
2343
7586765
78564756
4564
abcde
132424
abcdef
------------------------
我想尋找"abc"這字符串 並將該行刪去, 即變成
------------------------

4561632
758416

2343
7586765
78564756
4564

132424

------------------------
假設文件為$file
請問如何能實現呢?

2.我想尋找一個符號, 然後如果後要有數據的話就不管, 如果沒數據的話則刪除該行

例如(關鍵字為":"):
------------------------
123:87654646
456:
789:4521342
------------------------

會變成

------------------------
456:
------------------------
假設文件為$file
請問又如何實現呢?
发表于 2009-4-27 19:12:43 | 显示全部楼层
读取整个文件,然后字符串分多维数组,一行一行搜索字符串。
 楼主| 发表于 2009-4-27 19:25:16 | 显示全部楼层
首先讀入文件
_FileReadToArray($file, $Line)
然後要怎樣分維數組呢???
之後不知道甚樣用stringreplace寫...
发表于 2009-4-28 02:34:56 | 显示全部楼层
_FileReadToArray($sFile, $aLine),这个函数是将文件读入一个数组,文件的每一行作为数组一个元素。所以现在$aLine就是已经分行的文件内容,$aLine[0]等于文件总行数。
1.用For $i循环处理数组,从1至$aLine[0]。用StringInStr检查$aLine[$i],如果包含你要找的字符串,则将$aLine[$i]置空。
2.你的问题跟例子似乎相反?删除行不要用For循环,用我下面的示例。
都处理完成后,你要用_FileWriteFromArray将数组内容写回文件。

$i = 1
While $i < UBound($aLine)
        If StringRight($aLine[$i], 1) = ":" Then   ; 检查本行最后一个字符是否为 ":"
                _ArrayDelete($FileList, $i)   ; 是,说明无数据,删除此元素
        Else
                $i += 1   ; 否,$i自加,即不处理本行
        EndIf
WEnd
 楼主| 发表于 2009-4-28 10:12:48 | 显示全部楼层
十分感謝, 已經解決那兩條問題了

現在對數組的理解又深了一步:)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-28 22:56 , Processed in 0.071499 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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