Página 2 de 2

Re: Ajuda com substituição de caracteres!

Enviado: 11 Mar 2010 08:47
por trooper7
Opa galera! Bom dia!

É isso ae Alex, a partir do Harbour e tendo o Linux devidamente instalado aqui, AÍ SIM, a coisa vai! rs
Pablo César escreveu:Por natureza, este fórum é nota 10 ! E fica melhor ainda com a participação de todos. Claro que as vezes um tem mais tempo que outro, mas sempre é um prazer poder ajudar a um colega. Muitas vezes ao ajudar surgem soluções para algo que tínhamos abandonado há muito tempo. Desafios são muito normais na nossa linguagem e aliado a um site como este, só podemos dizer que aqui tem café dentro do bule.... hihihi
Concordo plenamente Pablo! Este fórum é TOTALMENTE EXCELENTE! =B
Principalmente para pessoas que, assim como eu, estão iniciando no mundo da programação de fato. Espero poder contar com a ajuda de vocês aqui e acredito que isso será possível, com certeza!

Valeu galera! Um grande abraço a todos! :{

Re: Ajuda com substituição de caracteres!

Enviado: 12 Mar 2010 15:28
por trooper7
Ae galera, só pra fechar o tópico, agradeço a ajuda de todos! Foi bom saber o esquema das libs, vai me ajudar bastante também.

E enfim, minha função para deixar apenas os números do CNPJ e CPF ficou assim:

Código: Selecionar todos

*"111.111.111-11/0001-11"

xst=""
	for ii=1 to len(xcl)
		if ! substr(xcl,ii,1)=",./\+-=|"
			xst=xst+substr(xcl,ii,1)
		endif	
	next
return(xst)
Um ForNext esperto ali e a adição da variável nos campos de CNPJ e CPF. Pronto! :)Pos

Um grande abraço a todos!

Re: Ajuda com substituição de caracteres!

Enviado: 12 Mar 2010 22:59
por alxsts
Olá!

Thiago: este código que você postou foi testado ? Fazendo uma análise superficial, não funcionará...

No For... Next

Código: Selecionar todos

      if ! substr(xcl,ii,1)=",./\+-=|"
         xst=xst+substr(xcl,ii,1)
      endif   
A condição abaixo nunca será verdadeira

Código: Selecionar todos

if ! substr(xcl,ii,1)=",./\+-=|"
A não ser que você troque o = por $

Código: Selecionar todos

if ! substr(xcl,ii,1) $ ",./\+- =|"
Abaixo segue um código genérico para extrair somente dígitos entre zero e nove de uma string.

Código: Selecionar todos

//------------------------------------------------------------------------------
Function StrDigits( cString )

   // #Alexandre Santos - 27/01/06 - 12:08
   // Extrai apenas os d¡gitos de uma string formatada, caso existam

   Local cRet := "", n, l, c

   If ! Empty( cString ) .and. ValType( cString ) == "C"
      l := Len( ( cString := AllTrim( cString ) ) )
      For n := 1 To l
         c  := Substr( cString, n, 1 )
         If Asc( c ) >= 48 .and. Asc( c ) <= 57
            cRet += c
         Endif
      Next
   Endif

   Return cRet
//------------------------------------------------------------------------------
Dica:
Sempre que utilizar um For... Next com um número variável de iterações,
armazene esta quantidade de iterações em uma variável.
Ex.:
Ao invés de escrever

Código: Selecionar todos

for ii=1 to len(xcl)
escreva:

Código: Selecionar todos

   nLen := len( xcl )
   for ii=1 to len(xcl)
Com isto você evitará que a cada iteração a função Len() seja executada e assim obterá um ganho de performance

Re: Ajuda com substituição de caracteres!

Enviado: 15 Mar 2010 09:15
por trooper7
Opa Alex, tudo bem?

Então cara, segundo o rapaz que trabalha comigo, está "testado e aprovado".
Mas depois disso que você me disse, tenho minhas dúvidas! rs

Depois eu vou testar e ver se realmente está funcionando, caso contrário eu uso essa sua dica! :)Pos

Valeu Alex, um grande abraço!

Re: Ajuda com substituição de caracteres!

Enviado: 15 Mar 2010 10:25
por alxsts
Olá!

Uma correção no exemplo que postei:

Código: Selecionar todos

nLen := len( xcl )
For ii=1 to nLen