delphi提取字符串

文本文件test.txt有以下内容:======================================>>>>>>>>张三是山东人.>>>>>>>>>李四是江西... 文本文件test.txt有以下内容:
======================================
>>>>>>>>张三是山东人.>>>>>
>>>>李四是江西人.>>
>>>王五是广东人...>>>
>呼七是内蒙古人..>>>>
>>刘八是甘肃人.....>
…………
======================================

现用delphi将test.txt文件中的省份名提取出来.
并用memo组件将其显示出来.
memo中显示的应该是:
山东
江西
广东
内蒙古
甘肃

希望能给出个delphi函数或过程...
展开
 我来答
达人国王
2010-06-16 · TA获得超过168个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:180万
展开全部

1.读入文本

2.先按行提取!!!

3.逐字检索,行中寻找特殊标记“是”

4.发现标记后,打开开始记录开关

5.开始记录开关打开后,一直添加记录检索过的字,并且行中寻找特殊标记“人”

6.发现标记后,打开结束记录开关

7.结束记录开关打开后,对记录的字符进行处理,添加到文本框中,且跳出当前行!

。。继续第2步

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

type

  TForm1 = class(TForm)

    Memo1: TMemo;

    Memo2: TMemo;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

 n,n1:integer;

 S:string;

 ST,SW,SJL:string;

 STF,SWF:boolean;

begin

 Memo1.Lines.LoadFromFile('test.txt');

 Memo2.Clear;

 ST:='是';

 SW:='人';

 for n:=0 to Memo1.Lines.Count-1 do

 begin

  S:=Memo1.Lines.Strings[n];

  SJL:='';

  STF:=false;

  SWF:=false;

  for n1:=1 to length(S)-1 do

  begin

   if STF=false then

   begin

    if S[n1]=ST[1] then

    begin

     if S[n1+1]=ST[2] then

     begin

      STF:=true;

     end;

    end;

   end

   else

   if SWF=false then

   begin

    SJL:=SJL+S[n1];

    if S[n1]=SW[1] then

    begin

     if S[n1+1]=SW[2] then

     begin

      SWF:=true;

     end;

    end;

   end

   else

   begin

    SJL:=copy(SJL,2,Length(SJL)-2);

    Memo2.Lines.Add(SJL);

    break;

   end;

  end;

 end;

end;

end.

百度网友88e1430
2010-06-15 · TA获得超过319个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:195万
展开全部
字符串里面都有一个是,所以应该从是入手

先找到是的位置 int nPos := Pos('是', *.txt.Lne1);
然后在整行数据中截取所需要的字符串 Copy(*.t.Line1,nPos+1,2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
井浩慨25
2010-06-16
知道答主
回答量:13
采纳率:0%
帮助的人:6.9万
展开全部
Delphi字符串分割函数 ExtractStrings默认分类 2010-03-30 21:14:45 阅读322 评论0 字号:大中小
procedure TForm1.Button1Click(Sender: TObject);
var
sdata :TStrings;
text :string;
begin
text := 'TXT|EXE|COM';
sdata := TStringList.Create;
ExtractStrings(['|'],[],Pchar(text),sdata);
showmessage(sdata[0]); //显示TXT
end;

Unit
Classes

Syntax

ExtractStrings(Separators: TSysCharSet; WhiteSpace: TSysCharSet; Content: PAnsiChar; Strings: TStrings): Integer;

Separators 参数指定分割字符。
WhiteSpace 参数指定每个子串开头被忽略的字符s。
Content 参数就是被分割的“源”串了。
Strings 参数用于接收分割后的各个子串。它的原有内容不会被清空。别忘了对Strings进行Create哦。
另外,EctractStrings不会把空串放入Strings中去。

举个例子吧:

如果我想分割以下字符串: ABC|... DEF|#### GHI|"中华网URL

希望得到下面四个字符串:
1、ABC
2、DEF
3、GHI
4、中华网URL
那么可以用下面的代码:
uses Classes;
var
ASource: PChar;
AStr: String;
ACount: Integer;
AStrings: TStringList;
begin
ASource := 'ABC|... DEF|#### GHI|"中华网URL';
AStrings := TStringList.Create;
try
ACount := ExtractStrings(['|'], [' ','#','.'], ASource, AStrings);
//........................
finally
AStrings.Free;
end;
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式