Função que conta a repetição de caracteres em uma string em AdvPL

Olá pessoal…

Hoje vou mostrar uma função desenvolvida que conta a repetição de um caracter em uma string (por exemplo, a letra i em Terminal de Informação, repete 2 vezes).

AdvPL

AdvPL

Essa função desenvolvida, recebe 3 parâmetros, o primeiro é a string completa, a segunda é o caracter buscado, e a terceira é se irá transformar tudo em maiúsculo antes de comparar.

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zConta
Função que conta quantos caracteres repetem em uma string
@type function
@author Atilio
@since 13/11/2016
@version 1.0
	@param cPalavra, character, Palavra a ser considerada
	@param cCaracter, character, Caracter a ser procurado
	@param lMaiusculo, logic, Transforma tudo em maiusculo
	@return nTotal, Total de caracteres encontrados
	@example
	u_zConta("Daniel Atilio", "a", .T.) //retorna 2
/*/

User Function zConta(cPalavra, cCaracter, lMaiusculo)
	Local aArea       := GetArea()
	Local nTotal      := 0
	Local nAtual      := 0
	Default cPalavra  := ""
	Default cCaracter := ""
	
	//Se transforma tudo em maiusculo
	If lMaiusculo
		cPalavra  := Upper(cPalavra)
		cCaracter := Upper(cCaracter)
	EndIf
	
	//Percorre todas as letras da palavra
	For nAtual := 1 To Len(cPalavra)
		//Se a posição atual for igual ao caracter procurado, incrementa o valor
		If SubStr(cPalavra, nAtual, 1) == cCaracter
			nTotal++
		EndIf
	Next
	
	RestArea(aArea)
Return nTotal

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.

Deixe uma resposta

Terminal de Informação