500分的大题,如何从一个文本中抽取有特定标记的字符串。(300分)

  • 主题发起人 Delphi王子
  • 开始时间
D

Delphi王子

Unregistered / Unconfirmed
GUEST, unregistred user!
[red][h1]如何从一个文本中抽取有特定标记的字符串[/h1][/red]
现有一文本文件,在其中有一个字符串,它的开头和结尾都有一个[green]“////”[/green]标志。
我如何才能得到这个字符串。
500分,等高手来拿。
 
遍历文本,查找到‘////’
 
我主要是不知道用程序如何实现。
找到“////”,我如何得到它呢。再说,如何找到"////"
 
while pos(yourstr,'////')<>0
begin
// 取出每个字符加到一个临时串中
end
 
用PosEx,可以获得////的位置
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
 
先if pos('[green]',文本一行)>0 then 向后copy直到pos('[/green]',文本一行)
 
while not F.Eof do
begin
readln(s,f);
//处理 s
end;
 
to 52free:
我的问题是:从一个文本文件中提取有特定标记的字符串,也就是说,这是一个文件,
使用pos('////',str),pos函数的第二个参数是一个字符串,不知道对于文本文件是否适用。
 
var
sList: TStringList;
sYourStr: string;
begin
sList := TStringList.Create;
sList.LoadFromFile('yourfile');
sYourStr := sList.Text;

...
sList.Free;
end;
 
to xiaolin0522:
现在我只是知道字符串的开头和结尾的标志,但这个字符串的内容我是不知道的。不知道
你有没有更好的办法。
 
procedure TForm1.Button2Click(Sender: TObject);
var
sList: TStringList;
pp,p:pchar;
n:integer;
begin
sList := TStringList.Create;
sList.LoadFromFile('d:/a.txt');
p:= pchar(sList.Text);
pp:=p;
while pos('////',p)>0 do
begin
n:=pos('////',p);
showmessage(inttostr(p-pp+n));
inc(p,n);
end;
sList.Free;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
sList: TStringList;
pp,p:pchar;
m,n:integer;
sb,se,s:string;
begin
sb:='////'; //假设这是开始标记
se:='////'; //假设这是结束标记
sList := TStringList.Create;
sList.LoadFromFile('d:/a.txt');
p:= pchar(sList.Text);
n:=pos(sb,p);
if n>0 then
begin
pp:=p+n-1;
inc(p,n+length(sb)-1);
m:=pos(se,p);
if m>0 then
begin
s:=copy(pp,1,m-1+length(se+sb));
showmessage(s);
end;
end;
sList.Free;
end;

测试文本:
mmmm////
jjjjjjjjj
jjjjjj////8348934
1234
 
多写各位。在各位的提示下,我已经搞定了
但还得多谢谢各位。
散分。
其余的200分给jsxjd,我会发一个帖子的。请注意。
 
jsxjd的方法我也是了一下,果然好用。
请你到我新发的帖子拿分。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1533043
 
顶部