eliminar caracteres de campos

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
matrix
Usuário Nível 3
Usuário Nível 3
Mensagens: 131
Registrado em: 06 Jul 2004 08:41
Localização: Paraná
Contato:

eliminar caracteres de campos

Mensagem por matrix »

pessoal,

preciso importar um campo de outro DBF e preciso eliminar caracteres "letras", e impoortar somente os numeros tipo.

EX: DI52F45 -> 5245

o q me sugerem a fazer??

abraços.
"Ter Problemas é Inevitável, ser derrotado por eles é opcional.!!"
Dércio_Luiz_Zanatta
Usuário Nível 3
Usuário Nível 3
Mensagens: 153
Registrado em: 11 Jan 2006 15:37
Localização: Ibirubá - RS

Mensagem por Dércio_Luiz_Zanatta »

Ola...
Eu tentaria assim...
Vcampo:="DI5F45"
I:=1
Vstring:=""
DO WHILE I<=LEN(VCAMPO)
If IsDigit(Substr(Vcampo,i,1))
Vstring:=Vstring+Substr(Vcampo,i,1)
Endif
I+=1
Enddo
..
Um grande abraço...
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Tem usuário que a inteiração com o programador, é coisa de extrema urgência. Já me ví na situação que no campo nome de cliente, estava também número protocolo, celular, etc... era mais fácil ele se pronunciar e colocar os dados no devido campo. Também ocorre quando pegamos sistema de outros que não foram muito bem projetados... Então eu faço o seguinte:

Para eliminar número:

Código: Selecionar todos

VXNOM:=ALLTRIM(CHARREM("0123456789(-)",VNOM))
Para eliminar caracteres da varável VNOM:

Código: Selecionar todos

VSTRING:=""
FOR I=33 TO 255
    IF !(I>47 .AND. I<58)
       VSTRING:=VSTRING+CHR(I)
    ENDIF
NEXT
VXCOD:=ALLTRIM(CHARREM(VSTRING,VNOM))
O CAHRREM é muito útil da CT.LIB.

Um clip-abraço :)Pos
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

(atenção: EDITADO conforme observação do Dr. Spock, a seguir)


Dá pra fazer mais simples e fácil de "ver":

Código: Selecionar todos

variavel="DI52F45"

numeros=""
outros=""
y=len(variavel)
for x=1 to y
  a=substr(variavel,x,1)
  if a$"1234567890"
    numeros=numeros+a
  else
    outros=outros+a
  endi
next

?numeros=>"5245"
?outros -> "DIF"
Editado pela última vez por Eolo em 29 Mai 2007 07:53, em um total de 1 vez.
Dr_Spock
Usuário Nível 1
Usuário Nível 1
Mensagens: 17
Registrado em: 05 Jan 2007 13:40
Localização: Brasilia - DF

Complementando...

Mensagem por Dr_Spock »

- So complementando o exemplo postado pelo Vo Eolo, faltou a linha com a definicao da variavel "a".

variavel="DI52F45"

numeros=""
outros=""
for x=1 to len(variavel)

a = substr(variavel,x,1) && essa variavel nao estava definida

if a $ "1234567890"
numeros = numeros + a && agora ela pode ser concatenada.
else
outros = outros + a
endif
next x

?numeros=>"5245"
?outros -> "DIF"

- Clip_abraco a todos :)Pos
-----------------------------------------------------------
Dbase II - Cobol MB - Edisa 251 - CP 300 / 500
Clipper Summer 85 - Proceda 4 Mhz - Hd 10 Mb
Responder