Função que tira zeros a esquerda em AdvPL

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

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

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

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

Deixe uma resposta

%d blogueiros gostam disto: