Nesse vídeo demonstraremos em como buscar um texto dentro de outro, trazendo todas as posições encontradas em um array, através da função cScan.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe101 Retorna um array com todas as posições encontradas de um texto @type Function @author Atilio @since 12/12/2022 @obs Função cScan Parâmetros + Texto da string + Caractere a ser procurado Retorno + Array com as posições do caractere encontrado na string **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe101() Local aArea := FWGetArea() Local cFrase := "O rato roeu a roupa do Rei de roma, a rainha com raiva resolveu remendar. Num ninho de mafagafos, cinco mafagafinhos há! Quem os desmafagafizá-los, um bom desmafagafizador será." Local cBusca := "a" Local aDados := {} //Busca todas as repetições aDados := cScan(cFrase, cBusca) FWAlertInfo("Número de vezes que a busca se repete: " + cValToChar(Len(aDados)), "Teste cScan") FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Dan tem como fazer com que busque a palavra inteira exemplo Local cBusca := “Rei”?
Boa tarde Gabriel, tudo joia?
Com a cScan, infelizmente não é possível, pois ela pesquisa por 1 caractere. Pode ser que no futuro eles atualizem a rotina.
Se for só ver a quantidade de repetições da palavra, tipo “rei”, ai você pode usar a CountStr, igual nesse link – https://terminaldeinformacao.com/2023/11/12/verificando-quantas-vezes-uma-expressao-se-repete-com-a-funcao-countstr-maratona-advpl-e-tl-096/
Agora para pegar as posições mesmo, ai você poderia fazer um For percorrendo os caracteres da string. Algo +- assim:
Um grande abraço.