Página 2 de 2

Retirar caratere "/" do conteudo da variavel

Enviado: 07 Out 2022 16:38
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

Retirar caratere "/" do conteudo da variavel

Enviado: 09 Out 2022 08:57
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!

Retirar caratere "/" do conteudo da variavel

Enviado: 09 Out 2022 10:58
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

Retirar caratere "/" do conteudo da variavel

Enviado: 10 Out 2022 07:10
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!

Retirar caratere "/" do conteudo da variavel

Enviado: 11 Out 2022 08:18
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!