Remover Acentos: String e Char - Delphi

Veja nesta Quick como podemos remover os acentos de uma texto, seja uma string ou um simples char

Olá galera, nesta Quick Tips, irei mostra como podemos remover os acentos de uma texto, seja uma string ou um simples char. Vejamos como implementar e reaproveitar este método.

 

Inicialmente vamos criar um exemplo, adicionando em nosso form, e salvando o mesmo como uFrmPrincipal.pas :

 

1 Button (BtnRemoverAcentos)

3 Edit (EdtExemplo1, EdtResultado, EdtExemplo2)

2 GroupBox (GroupBoxExemplo1, GroupBoxExemplo2)

 

Nosso exemplo completo

 


 

Iremos agora na seção private criar uma function para remover os acentos, vejamos sua declaração:

 

private

{ Private declarations }

    function RemoverAcento(Key: Char): char;

public

{ Public }

 

 

RemoverAcento

{ Com esta função estamos verificando se a variável Key possui algum acento, usando a instrução in, por exemplo  se digitarmos 'é','è','ê', o resultado da função será “e” , e assim por diante, com esta função podemos trocar também “.” por “,” ou “,” por “.”, basta adaptar seguindo este modelo.}

 

function TFrmPrincipal.RemoverAcento(Key: Char): char;

begin

    if (key in ['é','è','ê']) then

    begin

        Result := 'e';

    end

    else

    if (key in ['É','È','Ê']) then

    begin

        Result := 'E';

    end

    else

    if (key in ['á','à','ã','â']) then

    begin

        Result := 'a';

    end

    else

    if (key in ['Á','À','Ã','Â']) then

    begin

        Result := 'A';

    end

    else

    if (key in ['í','ì','Í','Ì','î','Î']) then

    begin

        Result := 'i';

    end

    else

    if (key in ['Í','Ì','Î']) then

    begin

        Result := 'I';

    end

    else

    if (key in ['ó','ò','õ','ô']) then

    begin

        Result := 'O';

    end

    else

    if (key in ['Ó','Ò','Õ','Ô']) then

    begin

        Result := 'O';

    end

    else

    if (key in ['ú','ù']) then

    begin

        Result := 'u';

    end

    else

    if (key in ['Ú','Ù']) then

    begin

        Result := 'U';

    end

    else

    if (key in ['ç']) then

    begin

        Result := 'c';

    end

    else

    if (key in ['Ç']) then

    begin

        Result := 'C';

    end

    else

        Result := Key;

 

end;

 

{ Com este método ao clicamos no nosso BtnRemoverAcentos, todo o conteúdo de EdtExemplo1, que contiver acentos, imediatamente será substituído por caracteres sem acento }

 

BtnRemoverAcentos

procedure TFrmPrincipal.BtnRemoverAcentosClick(Sender: TObject);

Var

   S : String;

   I : Integer;

begin

   for I := 1 to Length(EdtExemplo1.Text) do

   begin

      S := S + RemoverAcento(EdtExemplo1.Text[I]);;

   end;

   EdtResultado.Text := S;

end;

 

{ Com este método ao digitarmos qualquer coisa no EdtExemplo2, que possua acento automaticamente o mesmo será substituído por um caracter sem acento }

 

EdtExemplo2Change

procedure TFrmPrincipal.EdtExemplo2KeyPress(Sender: TObject; var Key: Char);

begin

    key := RemoverAcento(Key);

end;

Fico por aqui ate à próxima Quick Tips. Baixe o exemplo completo neste post.

Um abraço

 

Wesley Y

Artigos relacionados