wongfung 发表于 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
請問又如何實現呢?

ddx13 发表于 2009-4-27 19:12:43

读取整个文件,然后字符串分多维数组,一行一行搜索字符串。

wongfung 发表于 2009-4-27 19:25:16

首先讀入文件
_FileReadToArray($file, $Line)
然後要怎樣分維數組呢???
之後不知道甚樣用stringreplace寫...

sensel 发表于 2009-4-28 02:34:56

_FileReadToArray($sFile, $aLine),这个函数是将文件读入一个数组,文件的每一行作为数组一个元素。所以现在$aLine就是已经分行的文件内容,$aLine等于文件总行数。
1.用For $i循环处理数组,从1至$aLine。用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

wongfung 发表于 2009-4-28 10:12:48

十分感謝, 已經解決那兩條問題了

現在對數組的理解又深了一步:)
页: [1]
查看完整版本: 如何尋找關鍵字並將那些行刪除?