Portaria CAT102 - Função p/ extrair os números de uma string

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

cainelli
Usuário Nível 1
Usuário Nível 1
Mensagens: 39
Registrado em: 06 Nov 2004 11:14
Localização: Promissão/SP

Portaria CAT102 - Função p/ extrair os números de uma string

Mensagem por cainelli »

Colegas,

Alguém tem para disponibilizar uma função que extraia apenas os números de uma string ?
Poderia tentar fazer, mas estas portarias tomaram todo meu tempo.

Obrigado,

Marcello.
cainelli
Usuário Nível 1
Usuário Nível 1
Mensagens: 39
Registrado em: 06 Nov 2004 11:14
Localização: Promissão/SP

Mensagem por cainelli »

Colegas,

Acho q consegui fazer :

Código: Selecionar todos

Function ApenasNumerosStr(pStr)
Local I:= 0
Result:= ''
For I := 1 To Len(pStr)
    If Substr(pStr,I,1) $ '1234567890'
       Result:= Result + Substr(pStr,I,1) 
    endif
Next    
Return (Result) 
:xau Marcello.
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Existe também a função REMALL() da CATolls.


resultado:= REMALL("mais vale 1 passaro na mão","1")
resultado = mais vale passaro na mão
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Ah sim , me ocorreu uma outra coisa agora. Desculpe, mas acho que o que vc quer deve ser isso.
Caso o que vc queira, seja extrair os numeros de uma string que contenham pontos e vírgulas....
GT:= "000.006.908.876,07"
use a strtran()

gt:= strtran(gt,",","") // extrai a virgula
gt:= strtran(gt,".","") // extrai o ponto

na verdade ela não extrai, e sim substitui. Mas a gente engana ela. :))
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

alaminojunior escreveu:Existe também a função REMALL() da CATolls.
Essa eu não conhecia. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
cainelli
Usuário Nível 1
Usuário Nível 1
Mensagens: 39
Registrado em: 06 Nov 2004 11:14
Localização: Promissão/SP

Mensagem por cainelli »

Alamino,

Obrigado pelas dicas, mas preciso extrair tudo, ponto, virgula, letras e acho q da maneira como fiz vai me atender melhor.

Abraço,

Marcello.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Mas ao que parece, quando você diz "extrair", significa "manter". E no código do colega AlaminoJunior "extrair" significa "fazer sumir". Se extrair significa manter, o seu código dá conta direitinho. Ou você, caso use a CAT, poderia usar a tal da REMALL().
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
cainelli
Usuário Nível 1
Usuário Nível 1
Mensagens: 39
Registrado em: 06 Nov 2004 11:14
Localização: Promissão/SP

Mensagem por cainelli »

Maligno,

Realmente me expressei mal, minha necessidade é manter apenas os números. Com StrTran daria certo, mas teria q fazer muitas comparações.
Postei como fiz aqui no forum para o caso de alguém precisar, pois na CAT102 pede o número da residencia separado do endereço e o campo é obrigatório.
No meu cadastro, o número da casa esta junto com o endereço, então foi a maneira que encontrei de resolver. Estou usando também em campos como CPF, CNPJ, etc.

Marcello.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ah, agora entendi. Por essas e outras que sempre mantenho o número separado.
Mas e se tiver algo do tipo: "RUA 15 DE NOVEMBRO"? Ajusta no "braço"?

Aliás, acho que o termo "extrair" está mais facilmente compreensível no seu caso. Entendo que extrair seja o mesmo que "aproveitar", não "descartar". Mas pelo menos o caso está resolvido. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder