巧用TStrings类进行字符串的分割

发布: 2010-1-17 22:59 | 作者: binglin | 来源: StmFans思蜕盟 OPELC 自由电子联盟

在开发应用程序时,经常遇到需要将某一个字符串分为几个字符串。

以“123 456 abc cde"为例,这个字符串的分隔符为空格符,那么我们可以用TStrings类的Delimiter属性设置来实现这个功能。

建一个新工程,如下图所示:


截图13.jpg



这个程序的功能就是将输入框内含有空格的字符串分为几个字符串在MEMO上逐行显示出来,具体的代码如下:

CODE:

unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm3 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
  s: string;
  strs: TStrings;
  i: Integer;
begin
  Memo1.Clear;
  s := Trim(Edit1.Text);
  strs := TStringList.Create;
  strs.Delimiter := ' ';
  strs.DelimitedText := s;
  for i := 0 to strs.Count - 1 do
    Memo1.Lines.Append(strs[i]);
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
  Edit1.Text := '';
  Memo1.Clear;
end;

end.
运行效果图:


截图14.jpg




这里简单解释一下用到的函数。

Trim(Edit1.Text);  这句的意思是去掉字符串前后所有的空格,一般我都习惯用它。
strs.Delimiter := ' '; //设置分隔符为‘ ’空格;
strs.DelimitedText := s; 这行的意思就是按Delimiter为分隔符的一个串,DelimitedText 得到赋值后回把这个字符串按Delimiter的字符分隔并添加到TStrings中。
strs 就是取TStrings中的第i行字符串。

这个功能非常方便好用,特别是在读取特定格式的文本文件时就更加方便了。

如果用来读取电子表生成的文本文件,它通常是用‘,'来分隔符的,则将Delimiter的定义改为:strs.Delimiter := ','; 即可。

完整的工程文件(需用delphi 2010)

字符串分隔.rar
(2010-01-17 22:59:48, Size: 312 KB, Downloads: 1)

crestxa (2010-2-16 13:41:33)
这个支持