Delphi:计算字符串在另一个字符串中出现的次数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

我正在使用Delphi 2007,并想知道是否有一种简单的方法来计算字符串在另一个字符串中出现的次数。我可以使用任何内置函数?

例子:

  • 字符串“How are you?”中出现一次“how”
  • “do”在字符串“你好吗?”中出现两次。
提问于
用户回答回答于

如果您发现自己经常在大量文本中搜索出现并且性能成为问题,那么您可以尝试使用Boyer-Moore搜索算法

在文本中找到所有出现的最坏情况需要大约3n个比较

Delphi中的实现可以在我们自己的SO中找到

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

用户回答回答于

我见过的最棒方法之一:

{ Returns a count of the number of occurences of SubText in Text }
function CountOccurences( const SubText: string;
                          const Text: string): Integer;
begin
  if (SubText = '') OR (Text = '') OR (Pos(SubText, Text) = 0) then
    Result := 0
  else
    Result := (Length(Text) - Length(StringReplace(Text, SubText, '', [rfReplaceAll]))) div  Length(subtext);
end;  { CountOccurences }

扫码关注云+社区

领取腾讯云代金券