**Unit para Limpar os caracteres**
unit LimparCaracteres;
interface
function TrocaCaracterEspecial(aTexto: string; aLimExt: boolean): string;
implementation
uses
SysUtils;
function TrocaCaracterEspecial(aTexto: string; aLimExt: boolean): string;
const
// Lista de caracteres especiais
xCarEsp: array [1 .. 38] of String = ('á', 'à', 'ã', 'â', 'ä', 'Á', 'À', 'Ã', 'Â', 'Ä', 'é', 'è', 'É', 'È', 'í', 'ì', 'Í', 'Ì', 'ó', 'ò', 'ö', 'õ',
'ô', 'Ó', 'Ò', 'Ö', 'Õ', 'Ô', 'ú', 'ù', 'ü', 'Ú', 'Ù', 'Ü', 'ç', 'Ç', 'ñ', 'Ñ');
// Lista de caracteres para troca
xCarTro: array [1 .. 38] of String = ('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'A', 'e', 'e', 'E', 'E', 'i', 'i', 'I', 'I', 'o', 'o', 'o', 'o',
'o', 'O', 'O', 'O', 'O', 'O', 'u', 'u', 'u', 'u', 'u', 'u', 'c', 'C', 'n', 'N');
// Lista de Caracteres Extras
xCarExt: array [1 .. 48] of string = ('<', '>', '!', '@', '#', '$', '%', '¨', '&', '*', '(', ')', '_', '+', '=', '{', '}', '[', ']', '?', ';', ':',
',', '|', '*', '"', '~', '^', '´', '`', '¨', 'æ', 'Æ', 'ø', '£', 'Ø', 'ƒ', 'ª', 'º', '¿', '®', '½', '¼', 'ß', 'µ', 'þ', 'ý', 'Ý');
var
xTexto: string;
i: Integer;
begin
xTexto := aTexto;
for i := 1 to 38 do
xTexto := StringReplace(xTexto, xCarEsp[i], xCarTro[i], [rfreplaceall]);
// De acordo com o parâmetro aLimExt, elimina caracteres extras.
if (aLimExt) then
for i := 1 to 48 do
xTexto := StringReplace(xTexto, xCarExt[i], '', [rfreplaceall]);
Result := xTexto;
end;
end.
**Chamada da função **
TrocaCaracterEspecial(STRING, true)