Como contar o número de ocorrências de um texto dentro de uma String?
Abaixo segue uma função que conta o número de vezes em que uma substring é
encontrada dentro de uma string.
É necessário estar declarado SysUtils na seção uses,
em versões unicode declare System.SysUtils.
Segue o código fonte da função:
1
2
3
4
5
6
7
8
9
| function CountPos(const subtext: string; Text: string): Integer;
begin
if (Length(subtext) = 0) or (Length(Text) = 0) or (Pos(subtext, Text) = 0)
then
Result := 0
else
Result := (Length(Text) - Length(StringReplace(Text, subtext, '',
[rfReplaceAll]))) div Length(subtext);
end; |
function CountPos(const subtext: string; Text: string): Integer;
begin
if (Length(subtext) = 0) or (Length(Text) = 0) or (Pos(subtext, Text) = 0)
then
Result := 0
else
Result := (Length(Text) - Length(StringReplace(Text, subtext, '',
[rfReplaceAll]))) div Length(subtext);
end;
Exemplo de uso:
1
2
3
4
5
6
7
8
9
10
11
| procedure TForm1.Button1Click(Sender: TObject);
var
teste : String;
vCount : Integer;
begin
teste := 'O Show Delphi é uma comunidade que quer compartilhar' +
' conhecimento sobre o Delphi.';
vCount := CountPos('Delphi', teste);
ShowMessage('Delphi foi encontrado ' + IntToStr(vCount) + ' vez(es)!' );
end; |
procedure TForm1.Button1Click(Sender: TObject);
var
teste : String;
vCount : Integer;
begin
teste := 'O Show Delphi é uma comunidade que quer compartilhar' +
' conhecimento sobre o Delphi.';
vCount := CountPos('Delphi', teste);
ShowMessage('Delphi foi encontrado ' + IntToStr(vCount) + ' vez(es)!' );
end;
-
InfusTec
-
17.254 views
- 1 comentários
- 13 de abril de 2015
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo
Muito Boa esta solução, só tinha encontrado utilizando while`s ou For`s duas ou mais vezes e não estava gostando da solução, Esta ficou perfeita e inclui um caseSensitive para complementar. Obrigado por compartilhar!