信手写的一个,测试可以通过,你看看吧,希望能够对你有用,用了两个Edit(Edit1,Edit2),一个Button(Button1),在Edit1中存放大字符串, Edit2中存放子字符串, 执行效率不高,不好意思procedure TForm1.Button1Click(Sender: TObject); var Counter: integer; i: integer; begin Counter := 0; for i:=1 to Length(Edit1.Text) do begin if Pos(Edit2.Text, Edit1.Text)>0 then begin Counter := Counter + 1; Edit1.Text := Copy(Edit1.Text, Pos(Edit2.Text, Edit1.Text) + Length(Edit2.Text), Length(Edit1.Text)-Pos(Edit2.Text, Edit1.Text)); end; end; ShowMessage(IntToStr(Counter)); end;
function SubStrCount(SubStr,MainStr:String):Integer; var StrPos,Len:Integer; begin Result:=0; Len:=Length(SubStr); StrPos:=Pos(SubStr,MainStr); while StrPos>0 do begin Delete(MainStr,StrPos,Len); Inc(Result); StrPos:=Pos(SubStr,MainStr); end; end; eg: ShowMessage(IntToStr('abc','abc defj abc abc def'));
靠!看来今我是不是有毛病了?? function SubStrCount(SubStr,MainStr:String):Integer; var StrPos,Len:Integer; begin Result:=0; Len:=Length(SubStr); StrPos:=Pos(SubStr,MainStr); while StrPos>0 do begin Delete(MainStr,StrPos,Len); Inc(Result); StrPos:=Pos(SubStr,MainStr); end; end; eg: ShowMessage(IntToStr(SubStrCount('a ','a ddaa ')));
执行效率不高,不好意思procedure TForm1.Button1Click(Sender: TObject);
var
Counter: integer;
i: integer;
begin
Counter := 0;
for i:=1 to Length(Edit1.Text) do
begin
if Pos(Edit2.Text, Edit1.Text)>0 then
begin
Counter := Counter + 1;
Edit1.Text := Copy(Edit1.Text, Pos(Edit2.Text, Edit1.Text) + Length(Edit2.Text), Length(Edit1.Text)-Pos(Edit2.Text, Edit1.Text));
end;
end;
ShowMessage(IntToStr(Counter));
end;
var
StrPos,Len:Integer;
begin
Result:=0;
Len:=Length(SubStr);
StrPos:=Pos(SubStr,MainStr);
while StrPos>0 do
begin
Delete(MainStr,StrPos,Len);
Inc(Result);
StrPos:=Pos(SubStr,MainStr);
end;
end;
eg:
ShowMessage(IntToStr('abc','abc defj abc abc def'));
howMessage(IntToStr(SubStrCount('abc','abc defj abc abc def')));
function SubStrCount(SubStr,MainStr:String):Integer;
var
StrPos,Len:Integer;
begin
Result:=0;
Len:=Length(SubStr);
StrPos:=Pos(SubStr,MainStr);
while StrPos>0 do
begin
Delete(MainStr,StrPos,Len);
Inc(Result);
StrPos:=Pos(SubStr,MainStr);
end;
end;
eg:
ShowMessage(IntToStr(SubStrCount('a ','a ddaa ')));