Hoje eu precisei modificar um antigo sistema feito em Delphi para gerar arquivos contendo algumas informações. Nestas informações há elementos que se utilizam de caracteres não Alpha-numéricos como “;:; e “;/; e eis que para minha surpresa sou obrigado a removê-los.

Procurei por uma função que substituísse caracteres como “;Ç”; para “;C”; e só encontrei funções de remoção.

Então criei a minha que está logo abaixo.

{
  Substitui caracteres especiais por equivalentes ASCII
}
Function ReplaceNonAscii(const s: String) : String;
var i, pos: Integer;
const undesiredchars : String = '/ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÜÚÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ';
const replaces : String = '  AAAAAAACEEEEIIIIDNOOOOOxOUUUbBaaaaaaaceeeeiiiionooooo ouuuby';
Begin
  SetLength(Result, Length(s));
  for i := 1 to Length(s) do
    begin
      pos := ord(s[i]);
      if (s[i] in [#32, #48..#57, #65..#90, #97..#122]) then
        Result[i] := s[i]
      else
        begin
          pos := AnsiPos(s[i], undesiredchars);
          Result[i] := replaces[pos + 1];
        end;
    end;

end;

2 responses to ;Substituir caracteres especiais em Strings Delphi;

  1. Marco Avatar
    Marco

    Poderia colocar de forma certa? e não traduzido
    Fica até melhor para entender, do que tentar decifrar o que é “;para eu”; e “;final”;

    1. Marcos Regis Avatar
      Marcos Regis

      Não entendi o questionamento.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *