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.
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;
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;
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:
- rfReplaceAll –
quer dizer que você gostaria de substituir todas as incidências do conteúdo
‘DelpHi’. Caso você não o informe, será substituído apenas a primeira
incidência de ‘DelpHi’, ficando desta forma:
WESLEY YAMAZACK 219900000 LINGUAGEM: Delphi HUGO CARDOSO 218800000 LINGUAGEM: Java FELIPE PEREIRA 217700000 LINGUAGEM: DelpHi ERICK CARLOS 217700000 LINGUAGEM: PL/SQL MARCOS CARDOSO 217700000 LINGUAGEM: DelpHi JOAO PIRES 216600000 LINGUAGEM: C# JULIO CARLOS 215500000 LINGUAGEM: Java
- rfIgnoreCase –
quer dizer que você não gostaria de se preocupar com os caracteres case
sensitive, ou seja, a ou A é a mesma
coisa, caso você não o informe, só será substituído o conteúdo escrito de forma
100% igual, logo, DelpHi é diferente de Delphi e o conteúdo não será modificado. Vamos fazer
um teste implementando o código a seguir:
procedure TForm1.Button1Click(Sender: TObject); var lNovoConteudo: String; begin CarregarStringList; lNovoConteudo := StringReplace(pLista.Text, 'DELPHI', 'Delphi', []); ShowMessage( lNovoConteudo ); end;
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;
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 ;)
- Programador Delphi:
Neste guia de estudos você encontra os conteúdos que precisará para se tornar um programador Delphi completo. Confira a sequência de cursos e exemplos que te guiarão do básico ao avançado em Delphi. - Nota fiscal eletrônica na prática:
A Nota Fiscal Eletrônica consiste de um arquivo XML, o qual é preenchido com os dados de uma movimentação de mercadoria ou serviço, assinado digitalmente e enviado para a SEFAZ do estado no qual o contribuinte reside.