delphi 查询某个字符在字符串出现的位置,支持查找次数  
官方Delphi 学习QQ群: 682628230(三千人)
频道

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;

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.038860082626343 seconds