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;