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 firedac 获取mysql 数据库databases 列表

Delphi实现文件的拖放功能

Delphi firedac mysql 连接

Delphi 检查当前用户权限

Delphi开发的服务中调用指定应用程序

Delphi简单读取网上的文本文件

Delphi打印timage图片

Delphi 时间到就触发事件

Delphi fdconnection1.gettablenames 查看所有表包含用户表和系统表

Delphi如何删除数据库重复记录(4种方法)

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



打赏

取消

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

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

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

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

评论

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