Retirar caratere "/" do conteudo da variavel

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

alxsts
Colaborador
Colaborador
Mensagens: 3109
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Retirar caratere "/" do conteudo da variavel

Mensagem por alxsts »

Olá!
JoséQuintas escreveu:Errado, ou inseguro.
Já que quer fazer assim, então faça direito.
Apesar da desnecessária grosseria na resposta, você está correto na afirmação. O erro está no código da função que postei.
deividdjs escreveu:cStr = 8292,8293,8294,8295,8296,
quero eliminar somente a ultima virgula ','
De acordo com o que o OP mostrou, e assumindo que o último carácter é sempre uma vírgula, bastaria fazer

Código: Selecionar todos

cStr := Left( AllTrim( cString ), ( Len( AllTrim( cString ) ) - 1 ) )
Imagino que o OP tenha carregado esta string a partir de um array ou lendo alguma tabela:

Código: Selecionar todos

LOCAL aArray, cString, e

aArray  := { "8292", "8293", "8294", "8295", "8296" }
cString := ""

For Each e In aArray
   cString += e + ","
Next
Neste caso, o correto é não adicionar esta última vírgula, para não ter que removê-la depois...

Código: Selecionar todos

LOCAL aArray, cString, e

aArray  := { "8292", "8293", "8294", "8295", "8296" }
cString := ""

For Each e In aArray
   cString += If( Empty( cString, "", "," ) + e
Next
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 401
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr
Curtiram: 1 vez

Retirar caratere "/" do conteudo da variavel

Mensagem por deividdjs »

concordo plenamente .. essa é uma função onde quando cancelo uma nota fiscal e quero tirar o numero dela dessa string.. realmente eu coloco a virgura para servir de scopo na hora de eliminar a factura ...
"JoséQuintas"]Neste caso, o correto é não adicionar esta última vírgula, para não ter que removê-la depois...
Expandir visualizacaoVer codigo
1 LOCAL aArray, cString, e
2  
3 aArray  := { "8292", "8293", "8294", "8295", "8296" }
4 cString := ""
5  
6 For Each e In aArray
7    cString += If( Empty( cString, "", "," ) + e
8 Next
Aí acabo fazendo assim ... sei que não é a melhor maneira de fazer porém foi a que consegui fazer funcionar .. aceito sugestões

Código: Selecionar todos


c_newnota := alltrim(ELIMINA_STRING(ALLTRIM(CC_NOTA)+",",ALLTRIM(TIRA_ZEROS(c_factura))+","))


FUNCTION ELIMINA_STRING(cStr,c_Eliminar)

   local cStrNew := "", i , cDigito := "", cUltdigito := ""

   For i := 1 TO LEN(c_Eliminar)
       cStrNew := StrTran(cStr, c_eliminar,""[i])
		 
		 cDigito := SUBSTR( c_Eliminar , i , 1 )

		 IF cDigito == "," 
		    cStrNew := StrTran(cStr, c_eliminar,""[i])
		 ENDIF   
  		 cStr := (cStrNew)
	Next
	
//	cStrNew := Left( AllTrim( cStr ), ( Len( AllTrim( cStr ) ) - 1 ) )

	nLen := Len( Alltrim( cStr ) )
	
   If nLen  > 0 .and. Right(cStr,1)=","
      cStrNew := Substr( cStr, 1, ( nLen - 1 ) )
   Endif
	
   cStr := (cStrNew)

Return( cStr )

Abs!
Saludos,
Deivid José de Souza
Windows 11 + Harbour 3.4 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
hwgui 2.23 b8
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20416
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Retirar caratere "/" do conteudo da variavel

Mensagem por JoséQuintas »

Corre o risco de eliminar errado.
Supondo que a lista tenha "123,1123,2123" e vai eliminar a fatura "123", vai eliminar coisa errada.
Se não dá pra trabalhar com array, talvez mais prático/seguro acrescentar vírgulas antes de processar e depois remover.

Código: Selecionar todos

FUNCTION EliminaNumero( cLista, cNota )

cLista := "," + cLista + ","
cNota := "," + cNota + ","
cLista := StrTran( cLista, cNota, "," )
cLista := Substr( cLista, 2, Len( cLista ) - 2 )

RETURN cLista
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 401
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr
Curtiram: 1 vez

Retirar caratere "/" do conteudo da variavel

Mensagem por deividdjs »

Entendi! Não coloquei vírgula na frente .. tem razão! Eu até havia colocado... mais dava um problema na hora de eliminar... vou provar!
Saludos,
Deivid José de Souza
Windows 11 + Harbour 3.4 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
hwgui 2.23 b8
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 401
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr
Curtiram: 1 vez

Retirar caratere "/" do conteudo da variavel

Mensagem por deividdjs »

ficou perfeito e enxuto ... obrigado amigos!!
"deividdjs"]Expandir visualizacaoVer codigo
1 FUNCTION EliminaNumero( cLista, cNota )
2  
3 cLista := "," + cLista + ","
4 cNota := "," + cNota + ","
5 cLista := StrTran( cLista, cNota, "," )
6 cLista := Substr( cLista, 2, Len( cLista ) - 2 )
7  
8 RETURN cLista
9  
Forte abraço!
Saludos,
Deivid José de Souza
Windows 11 + Harbour 3.4 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
hwgui 2.23 b8
Responder