PosEx,Pos都是在一个字符串中搜索子串返回其索引值
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TfrmStrDemo = class(TForm)
Edit1: TEdit;
ListBoxMatch: TListBox;
btnPos: TButton;
btnPosEx: TButton;
procedure btnPosClick(Sender: TObject);
procedure btnPosExClick(Sender: TObject);
private
{ Private declarations }
public
function CountSubStr(text,sub:string):integer;
function CountSubStrEx(text,sub:string):integer;
end;
var
frmStrDemo: TfrmStrDemo;
implementation
uses
StrUtils;
{$R *.dfm}
procedure TfrmStrDemo.btnPosClick(Sender: TObject);
begin
ShowMessage('共有' +IntToStr(CountSubStr(ListBoxMatch.Items.Text,edit1.text))+'个');
end;
procedure TfrmStrDemo.btnPosExClick(Sender: TObject);
begin
ShowMessage('共有' +IntToStr(CountSubStrEx(ListBoxMatch.Items.Text,edit1.text))+'个');
end;
function TfrmStrDemo.CountSubStr(text, sub: string): integer;
var
nPos: Integer;
begin
Result := 0;
nPos := Pos(sub,text);
while nPos > 0 do
begin
INC(Result);//加1
text := Copy(text,nPos+Length(sub),MaxInt);
nPos := Pos(sub,text);
end;
end;
function TfrmStrDemo.CountSubStrEx(text, sub: string): integer;
var
nPos: Integer;
begin
Result := 0;
nPos :=StrUtils.PosEx(sub,text,1);
while nPos > 0 do
begin
INC(Result);
nPos := StrUtils.PosEx(sub,text,nPos + Length (sub))
end;
end;
end.
object frmStrDemo: TfrmStrDemo
Left = 0
Top = 0
Caption = 'frmStrDemo'
ClientHeight = 202
ClientWidth = 447
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Edit1: TEdit
Left = 127
Top = 8
Width = 121
Height = 21
TabOrder = 0
end
object ListBoxMatch: TListBox
Left = 0
Top = 0
Width = 121
Height = 202
Align = alLeft
ItemHeight = 13
Items.Strings = (
'one'
'two'
'three'
'four'
'five'
'six'
'seven'
'eight')
TabOrder = 1
ExplicitLeft = 16
ExplicitTop = 32
ExplicitHeight = 113
end
object btnPos: TButton
Left = 254
Top = 8
Width = 83
Height = 25
Caption = 'Count with pos'
TabOrder = 2
OnClick = btnPosClick
end
object btnPosEx: TButton
Left = 341
Top = 8
Width = 98
Height = 25
Caption = 'Count with PosEx'
TabOrder = 3
OnClick = btnPosExClick
end
end