Ir para o conteúdo principal

PEX - Remove caracteres e mantem somente números

Abaixo veremos comandos de evento PEX para extrair de qualquer string somente os números, ou seja, poderá atender a diversos casos como exemplo:

  • Remoção de caracteres especiais de telefones, mantendo somente os números.
  • Remoção de caracteres especiais de CPF/CPNJ, mantendo somente os números.
  • Seleção do numero do endereço, em caso de campos onde o número é digitado junto ao nome da rua.
  • Tratamento para CEP, Placas e outros mantendo somente os números.
Procedure EXEMPLO(const aiAtividadeAtual : Integer; aoFormularios : TJSONObject; const aoVariaveis : TVariaveisEventoFormulario; const aoMensagem : TJSONObject);
var
Ind    : Integer;
Result : String;
begin
     Result := '';
     FOR Ind := 1 to Length('TESTE123teste - evento 1 - PeX') do
     begin
       if TSTR.of_TemNumero(Copy('TESTE123teste - evento 1 - PeX',Ind,1)) then
       begin
          Result := Result + Copy('TESTE123teste - evento 1 - PeX', Ind, 1);
       end;
     end;   
end;
  • String = 'TESTE123teste - evento 1 - PeX'
  • Result = '1231'
Explicação do código:
  •  Vamos utilizar apenas 2 variáveis, uma para índice do tipo inteiro e outra para o nosso resultado to tipo String.
  •  No primeiro momento, limpamos por garantia a variável Result para começar a receber os dados, após iniciamos nosso FOR estabelecendo que o índice(Ind) começará de 1 ou seja, do primeiro caractere, e percorrerá até o Length da nossa string ou seja, até seu comprimento total ( no nosso exemplo = 13).
  •  A cada "ciclo" do FOR ele irá verificar utilizando o comando COPY se aquela posição do índice(Ind) especifica é um numeral ou não:
  • COPY('String', Posição, Numero Caracteres) - Ou seja, o COPY analisará o corpo da nossa String a partir da posição especificada, e percorrerá o numero de caracteres informado.
  • Nos casos que essa condição for verdadeira, ou seja, o caracter for numérico, o mesmo será adicionado ao Result, caso contrario não, e o índice(ind) passará para a próxima posição.

Lembre-se de buscar sempre entender o código, assim podendo trata-los em diversas situações e variações, por exemplo, sua string pode vir de variáveis do processo, variáveis PEX, variáveis do sistema, consultas SQL, formulários e outros, assim como a utilização da resposta obtida no Result poderá ser aplicada em qualquer tipo de destino.