kbmmw 5.10 版本中实现了一个非常好用的字符串搜索算法,即Boyer-Moore算法。
在用于查找子字符串的算法当中,BM(Boyer-Moore)算法是目前被认为最高效的字符串搜索算法,
它由Bob Boyer和J Strother Moore设计于1977年。 一般情况下,比KMP算法快3-5倍。该算法常用于文本编辑器中的搜索匹配功能,
详细的算法原理大家可以参照一下的链接研究。
字符串匹配的Boyer-Moore算法
在kbmmw 里面,我们可以直接使用就OK了。
procedure TForm1.Button1Click(Sender: TObject); var alltext,stext:string; i:integer; begin alltext:='HERE IS A SIMPLE EXAMPLE' ; stext:='EXAMPLE'; i:= TkbmMWBoyerMoore.SearchFor(Tencoding.UTF8.GetBytes(alltext), Tencoding.UTF8.GetBytes(stext) ); memo1.Lines.Add('BoyerMoore search:'+i.ToString);
i:= pos(stext,alltext);
memo1.Lines.Add('pos:'+i.ToString); end;
运行结果
由于第一个是按字节的,因此以0为基数,结果为17.