Função que tira zeros a esquerda em AdvPL

Olá pessoal…

Hoje vou mostrar uma função que desenvolvi que tira os zeros a esquerda de uma variável caracter (string) em AdvPL.

AdvPL

AdvPL

Essa função basicamente percorre a string, até achar a primeira posição que não seja 0, então se vc tiver um texto por exemplo, “00008765”, ele vai retornar “8765”.

Mas ai você me pergunta, não é só utilizar um cValToChar(Val()) da variável texto? Sim e não, sim se fosse somente o conteúdo numérico, mas pode ser que tenha letras, como por exemplo, “00008765A”, ao passar pela função, vai retornar “8765A”.

Abaixo a função desenvolvida:

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zTiraZeros
Função que tira zeros a esquerda de uma variável caracter
@author Atilio
@since 19/07/2017
@version undefined
@param cTexto, characters, Texto que terá zeros a esquerda retirados
@type function
@example Exemplos abaixo:
	u_zTiraZeros("00000090") //Retorna "90"
	u_zTiraZeros("00000909") //Retorna "909"
	u_zTiraZeros("0000909A") //Retorna "909A"
	u_zTiraZeros("000909AB") //Retorna "909AB"
/*/

User Function zTiraZeros(cTexto)
	Local aArea     := GetArea()
	Local cRetorno  := ""
	Local lContinua := .T.
	Default cTexto  := ""

	//Pegando o texto atual
	cRetorno := Alltrim(cTexto)

	//Enquanto existir zeros a esquerda
	While lContinua
		//Se a priemira posição for diferente de 0 ou não existir mais texto de retorno, encerra o laço
		If SubStr(cRetorno, 1, 1) <> "0" .Or. Len(cRetorno) ==0
			lContinua := .f.
		EndIf
		
		//Se for continuar o processo, pega da próxima posição até o fim
		If lContinua
			cRetorno := Substr(cRetorno, 2, Len(cRetorno))
		EndIf
	EndDo
	
	RestArea(aArea)
Return cRetorno

Bom pessoal, por hoje é só.
Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Mauricio disse:

    Boa Tarde,
    Gostaria de sugerir para ensinar a integração do excel com protheus através do suplemento APEXCEL80.
    Uma vez eu vi alguem fazendo e achei interessante.

Deixe uma resposta

Terminal de Informação