Quebrando um texto em um array com Separa, StrTokArr e StrTokArr2 – Maratona AdvPL e TL++ 435

Nesse vídeo demonstraremos a utilização das funções Separa, StrTokArr e StrTokArr2, que servem para quebrar um texto em um array conforme um delimitador.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe435
Retorna o numero da semana do mês / dia
@type Function
@author Atilio
@since 30/03/2023
@see https://tdn.totvs.com/display/tec/StrTokArr e https://tdn.totvs.com/display/tec/StrTokArr2
@obs 
    Função Separa
    Parâmetros
        Recebe a string com separadores
        Recebe o token para fazer a separação
    Retorno
        Array com os elementos separados (considerando posições vazias)

    Função StrTokArr
    Parâmetros
        + cValue     , Caractere   , Recebe a string com separadores
        + cToken     , Caractere   , Recebe o token para fazer a separação
    Retorno
        + aRet       , Array       , Array com os elementos separados conforme parâmetros informados

    Função StrTokArr2
    Parâmetros
        + cValue     , Caractere   , Recebe a string com separadores
        + cToken     , Caractere   , Recebe o token para fazer a separação
        + lEmptyStr  , Lógico      , Define se irá considerar posições vazias
    Retorno
        + aRet       , Array       , Array com os elementos separados conforme parâmetros informados

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe435()
    Local aArea     := FWGetArea()
    Local cFrase    := ""
    Local cQuebra   := ""
    Local aDadosSep := {}
    Local aDadosSt1 := {}
    Local aDadosSt2 := {}
    Local cMensagem := ""

    //Define um texto que terá separações e sua respectiva quebra
    cFrase  := "Daniel;João;Maria;;José;"
    cQuebra := ";"

    //Aciona os 3 tipos de separações
    aDadosSep := Separa(cFrase, cQuebra)
    aDadosSt1 := StrTokArr(cFrase, cQuebra)
    aDadosSt2 := StrTokArr2(cFrase, cQuebra, .T.)

    //Monta a mensagem e exibe
    cMensagem := "Separa deu [" + cValToChar(Len(aDadosSep)) + "] elemento(s)" + CRLF
    cMensagem += "StrTokArr deu [" + cValToChar(Len(aDadosSt1)) + "] elemento(s)" + CRLF
    cMensagem += "StrTokArr2 deu [" + cValToChar(Len(aDadosSt2)) + "] elemento(s)" + CRLF
    FWAlertInfo(cMensagem, "Teste de Separa, StrTokArr e StrTokArr2")

    FWRestArea(aArea)
Return

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