一个对文本操作的问题(100分)

  • 主题发起人 主题发起人 xiaohu66625
  • 开始时间 开始时间
X

xiaohu66625

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把一个目录下的所有文本里面的字符按我的要求替换掉,该怎样做呢?
 
1、遍历整个目录文件。
2、然后载入,进行替换操作。

下面代码你可以参考。
1、遍历文件
//判斷是不是目錄
function IsValidDir(SearchRec: TSearchRec): Boolean;
begin
result:= (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..');
end;

//傳入一個路徑,查找這個路徑下的所有文件(也查找所有子目錄下的所有文件)
procedure SearchAllPath(Path: string);
var
i: Integer;
sl_SubDir: TStrings;
SearchRec: TSearchRec;
begin
CheckStop;
if Trim(Path) = '' then exit;
sl_SubDir:= TStringList.Create;
if (FindFirst(Path + '/*.*', faDirectory, SearchRec) = 0) then
begin
if IsValidDir(SearchRec) and cbSubDir.Checked then sl_SubDir.Add(SearchRec.Name);
while (FindNext(SearchRec) = 0) do
begin
if IsValidDir(SearchRec) and cbSubDir.Checked then sl_SubDir.Add(SearchRec.Name)
else if IsValidFile(SearchRec) then DoFile(Path, SearchRec.Name); //找到文件,進行處理
end;
end;
FindClose(SearchRec);
for i:= 0 to sl_SubDir.Count - 1 do
SearchAllPath(Path + '/' + sl_SubDir.Strings);
sl_SubDir.Free;
end;

2、字符替换。

procedure TForm1.Button1Click(Sender:TObject);
var strs:tstrings;
i:Integer;
begin
strs:=tstringlist.Create;
strs.LoadFromFile(filename);
for i:=0 to strs.Count-1 do
strs.Strings:=StringReplace(strs.Strings,OldPattern,NewPattern,rfReplaceAll);
strs.SaveToFile(filename);
freeandnil(strs);
end;
 
如果不是想编程实现的话,UrtraEdit很实用
 
多人接受答案了。
 
后退
顶部