相关疑难解决方法(0)

是否有一个Boyer-Moore字符串搜索和快速搜索和替换功能以及Delphi 2010 String(UnicodeString)的快速字符串计数?

我需要三个快速大字符串函数:快速搜索,快速搜索和替换,以及字符串中子字符串的快速计数.

我在C++和Python中遇到过Boyer-Moore字符串搜索,但是用于实现快速搜索和替换的唯一Delphi Boyer-Moore算法是由Peter Morris(前身为DroopyEyes软件)及其网站的FastStrings的一部分.和电子邮件不再有效.

我已经将FastStrings移植到Delphi 2009/2010的AnsiStrings中,其中一个字节等于一个AnsiChar,但是使它们也可以在Delphi 2010中使用String(UnicodeString)显得非常重要.

使用这个Boyer-Moore算法,应该可以轻松地进行不区分大小写的搜索,以及不区分大小写的搜索和替换,没有任何临时字符串(使用StrUpper等),并且不调用比Boyer更慢的Pos()需要在重复搜索同一文本时进行摩尔搜索.

(编辑:我有一个部分解决方案,写作这个问题的答案,几乎100%完成,它甚至有一个快速的字符串替换功能.我相信它必须有bug,特别是认为,因为它假装是Unicode由于未实现的Unicode承诺,它必须存在故障.)

(编辑2:有趣和意外的结果;堆栈上的unicode代码点表的大堆栈大小 - 下面的代码中的SkipTable严重阻碍了你可以在unicode字符串boyer中完成的双赢优化量 - 摩尔字符串搜索.感谢Florent Ouchet指出我应该立即注意到的内容.)

delphi algorithm replace delphi-2010 boyer-moore

18
推荐指数
1
解决办法
5620
查看次数

标签 统计

algorithm ×1

boyer-moore ×1

delphi ×1

delphi-2010 ×1

replace ×1