Blog do Regis –; Meus aprendizados

O que ando aprendendo nesta caminhada sobre a Terra

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 comentários a ;Substituir caracteres especiais em Strings Delphi;

  1. Avatar de Marco
    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. Avatar de Marcos Regis
      Marcos Regis

      Não entendi o questionamento.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *