Delphi StringReplace: Como utilizar a função StringReplace no Delphi

Veja nesse artigo um exemplo do uso da função StringReplace no Delphi. A função StringReplace é muito utilizada quando queremos substituir o conteúdo de alguma string na linguagem Delphi.

Em muitos casos precisamos fazer a substituição de determinadas frases, palavras, ou até mesmo um único char numa cadeia de caracteres (string, por exemplo). No Delphi temos uma função para fazer essa tal substituição: a função StringRepalce.

A declaração da função StringReplace, localizada na Unit SysUtils pode ser feita da seguinte forma:

function StringReplace (const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

Imagine que você está fazendo um sistema de integração e chegou num ponto onde será necessário trocar uma determinada palavra em todo o arquivo. Vamos construir um exemplo para ficar mais usual. Criaremos um TStringList e uma procedure para preencher o mesmo, como mostra a Listagem 1.

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private public pLista: TStringList; procedure CarregarStringList; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.CarregarStringList; begin end; end.
Listagem 1. Criando um TStringList

Implementaremos agora o conteúdo de nossa lista. Para isso, vá até o método CarregarLista e implemente o seguinte código da Listagem 2.

procedure TForm1.CarregarStringList; begin if not Assigned(pLista) then pLista := TStringList.Create; pLista.Clear; pLista.Add('WESLEY YAMAZACK 219900000 LINGUAGEM: DelpHi'); pLista.Add('HUGO CARDOSO 218800000 LINGUAGEM: Java'); pLista.Add('FELIPE PEREIRA 217700000 LINGUAGEM: DelpHi'); pLista.Add('ERICK CARLOS 217700000 LINGUAGEM: PL/SQL'); pLista.Add('MARCOS CARDOSO 217700000 LINGUAGEM: DelpHi'); pLista.Add('JOAO PIRES 216600000 LINGUAGEM: C#'); pLista.Add('JULIO CARLOS 215500000 LINGUAGEM: Java'); end;
Listagem 2. Incrementando o método CarregarLista

Seguindo com o nosso exemplo, precisaremos agora substituir onde aparece Linguagem: 1, para Linguagem: Delphi. Adicione um TButton em seu formulário e no evento onClick deste implemente o código da Listagem 3.

procedure TForm1.Button1Click(Sender: TObject); var lNovoConteudo: String; begin CarregarStringList; lNovoConteudo := StringReplace(pLista.Text, 'DelpHi', 'Delphi', [rfReplaceAll, rfIgnoreCase]); ShowMessage( lNovoConteudo ); end;
Listagem 3. Adicionando TButton

Com essa rotina, todo o conteúdo 'DelpHi' de nossa lista pLista, será trocado por Delphi, como mostrado a seguir:

WESLEY YAMAZACK 219900000 LINGUAGEM: 3 HUGO CARDOSO 218800000 LINGUAGEM: 2 FELIPE PEREIRA 217700000 LINGUAGEM: Delphi ERICK CARLOS 217700000 LINGUAGEM: Delphi MARCOS CARDOSO 217700000 LINGUAGEM: Delphi JOAO PIRES 216600000 LINGUAGEM: 3 JULIO CARLOS 215500000 LINGUAGEM: 2

Porém, vocês podem ficar curiosos e se perguntarem o que é: rfReplaceAll e rfIgnoreCase? Vamos à explicação:

Em nenhum momento na nossa pLista o conteúdo foi escrito ‘DELPHI’. Neste caso nada irá acontecer com o nosso conteúdo. Para que funcione, basta adicionar o parâmetro rfIgnoreCase, e você terá o conteúdo modificado, como mostrado na Listagem 4.

procedure TForm1.Button1Click(Sender: TObject); var lNovoConteudo: String; begin CarregarStringList; lNovoConteudo := StringReplace(pLista.Text, 'DELPHI', 'Delphi', [rfIgnoreCase]); ShowMessage( lNovoConteudo ); end;
Listagem 4. Trabalhando com o parâmetro rfIgnoreCase

Com isso, podemos fazer modificações em qualquer conteúdo usando ou não caracteres case sensitive, trocando apenas a primeira ou todas as incidências de uma palavra.


Saiba mais sobre Delphi ;)

Artigos relacionados