帮助从文本中提取字串(50分)

  • 主题发起人 主题发起人 leadroy
  • 开始时间 开始时间
L

leadroy

Unregistered / Unconfirmed
GUEST, unregistred user!
文本文件如下面的格式:(没有规律换行,以前面Za开始提取)

Za:111111 Za:222222
Za:33333
Za:4444444444444 Za:555555555555 Za:666666666666666

我需要提取的字串,如下面格式:
Za:111111
Za:222222
Za:33333
Za:4444444444444
Za:555555555555
Za:666666666666666

急死了.看看我发布的时间(03:42)就知道快天亮了我还没上床啊.
谢了!
 
var
StringS:TStrings;
I:Integer;
SubStr:String;
begin
StringS:=TStringList.Create;
SubStr:=StringReplace(SubStr,'za',#13#10,[rfReplaceAll]);
Strings.Text:=SubStr;
for I:=0 to Strings.Count-1 do
begin
...............
end;
end;
 
var
F1, F2: TextFile;
Ch,ch1: Char;

begin
AssignFile(F1, OldFile);
Reset(F1);
AssignFile(F2, NewFile);
Rewrite(F2);
while not Eof(F1) do
begin
Read(F1, Ch); //读源文件
if UpperCase(ch) = 'Z' then //找到z后继续找A
begin
ch1 := ch;
Read(F1, Ch); //'z'的下一个字符如果是‘a’
if UpperCase(ch) = 'A' then
begin
Write(F2, #13#10); //插入回车符
Write(F2, ch1); //写入新文件
end;
end;
Write(F2, Ch); //写入新文件
end;
CloseFile(F2);
CloseFile(F1);
end;
 
Memo2中为文本中的内容
可以Memo2.Lines.LoadFromFile(文件名)
Memo1为处理以后的内容

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i:integer;
begin
for i:=0 to Memo2.Lines.Count-1 do begin
s:=Memo2.Lines.Strings;
while pos('Za:',s)>0 do begin
s:=copy(s,4,length(s)-1);
if pos('Za:',s)>0 then begin
Memo1.Lines.Add('Za:'+copy(s,1,pos('Za:',s)-1));
s:=copy(s,pos('Za:',s),length(s));
end
else begin
Memo1.Lines.Add('Za:'+s);
end;
end;
end;
end;
 
已有解,纯顶
 

Similar threads

后退
顶部