delphi有没有统计一个字符串中某个子串(或字母)出现次数的函数 ( 积分: 50 )

  • 主题发起人 主题发起人 wangxinxx
  • 开始时间 开始时间
W

wangxinxx

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟对这个不太清楚,查了半天也没有见到一个这样的函数。不会手工写一个吧。其实不难,但是系统如果提供我想会更好吧。不会每次都带上自己写的函数。:)
请大家帮个忙。
 
小弟对这个不太清楚,查了半天也没有见到一个这样的函数。不会手工写一个吧。其实不难,但是系统如果提供我想会更好吧。不会每次都带上自己写的函数。:)
请大家帮个忙。
 
:=lenght(str)-length(stringreplace(str,sub,''));
 
完善一下(:
procedure TForm1.Button1Click(Sender: TObject);
var
aStr : String;
bInt : Integer;
begin
aStr := 'aabbbaa ccc dd aa ddd';
bInt := Length(ASTR) -
Length( StringReplace( aStr, 'aa', StringOfChar(' ',Length('aa') -1),
[rfReplaceAll]));
ShowMessage(inttostr(bint));
end;
 
楼上的复杂运行又慢!
以下自定义函数放入到一个单元中,然后将该单元跟delphi的系统单元文件放到一起。
以后只要引用此单元即可。
也可以把该函数直接放放到系统单元中,以后该函数就存在了。
function StrCountOf(const Str1, Str2: PChar):Integer;//本函数用于空值结尾的字符串。
var tmp:Pchar;
begin
tmp:=strPos(Str1,Str2);
result:=0;
while tmp<>nil do
begin
result:=result+1;
tmp:=strPos(Str1,Str2);
end

end;
 
uses StrUtils;

function TForm1.StrCountOf(Const Str1, Str2: String):Integer;
var
Tmp:String;
i,TmpCount:Integer;
begin
Result:=0;
Tmp:=Str2;
TmpCount:=Length(Str1);
i:=Pos(Str1,Tmp);
while i>0 do
begin
Result:=Result+1;
Tmp:=RightStr(Tmp,Length(tmp)-i+1);
Tmp:=RightStr(Tmp,Length(Tmp)-TmpCount);
i:=Pos(Str1,Tmp);
end

end;
 
结束吧。基本知道了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部