Rss

  • youtube
  • linkedin
  • google

Substituir caracteres especiais em seqüências de 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: Número inteiro;
const undesiredchars : Seqüência de caracteres = ' / ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ × ØÙÜÚÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ';
Substitui const : Seqüência de caracteres = 'AAAAAAACEEEEIIIIDNOOOOOxOUUUbBaaaaaaaceeeeiiiionooooo ouuuby';
Begin SetLength(Resultado, Comprimento(s));
  para eu := 1 de comprimento(s) começar a pos := ord(s[Eu]);
      se (s[Eu] em [#32, #48..#57, #65..#90, #97..#122]) Então o resultado[Eu] := s[Eu]
      começar outra pos := AnsiPos(s[Eu], undesiredchars);
          Resultado[Eu] := Substitui[pos + 1];
        final;
    final;

final;

 ;

Comments (2)

  1. 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”

Deixe um comentário

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

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.