delphi 查询某个字符在字符串出现的位置,支持查找次数


本文整理自网络,侵删。

 
function SearchString(const FindStr, SourceString: string; Num: Integer):
Integer;
var
FirstSym: PChar; //Ссылка на первый символ
function MyPos(const FindStr, SourceString: PChar; Num: Integer): PChar;
begin
   Result := AnsiStrPos(SourceString, FindStr);
     //Поиск вхождения подстроки в строку
   if (Result = nil) then
     Exit; //Подстрока не найдена
   Inc(Result); //Смещаем указатель на следующий символ
   if Num = 1 then
     Exit; //Если нужно первое вхождение - заканчиваем
   if num > 1 then
     Result := MyPos(FindStr, Result, num - 1);
   //Рекурсивный поиск следующего вхождения
end;
begin
FirstSym := PChar(SourceString);
//Присваиваем адрес первого символа исходной строки
Result := MyPos(PChar(FindStr), PChar(SourceString), Num) - FirstSym;
//Номер позиции в строке
if Result < 0 then
   Result := 0; //Возвращаем номер позиции
end;



procedure TForm1.Button1Click(Sender: TObject);
var
StrF, StrSrc: string;
n: Integer;
begin
StrF := '国';
StrSrc := '中国华人民共和国万岁';
n := SearchString(StrF, StrSrc,1);   //结果2
memo1.Lines.Add(inttostr(n));
end;


procedure TForm1.Button2Click(Sender: TObject);
var
StrF, StrSrc: string;
n: Integer;
begin
StrF := '国';
StrSrc := '中国华人民共和国万岁';
n := SearchString(StrF, StrSrc,2);   //结果8
memo1.Lines.Add(inttostr(n));
end;

相关阅读 >>

Delphi 服务操作

Delphi 检验手机号 ismobilenumber

Delphi发送邮件―中文显示为乱码解决

Delphi获取当前计算机所有盘符

Delphi waitforsingleobject 响应窗体

Delphi tclientdataset的全面剖析

Delphi winapi: writeprivateprofilestring、getprivateprofilestring - 简单读写 ini 文件

Delphi使用idtcpclient和idtcpserver相互发送数据

Delphi 侧边栏隐藏窗体

Delphi 部分操作文件函数

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...