Substituir caracteres especiais em Strings Delphi

O que ando aprendendo nesta caminhada sobre a Terra

Substituir caracteres especiais em Strings Delphi

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

  1. Marco says:

    Could put it right? and untranslated
    It's even better to understand, do que tentar decifrar o que é “;para eu”; e “;final”;

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.