Convertendo string para array


A função Strtokarr retorna um array, de acordo com os dados passados como parâmetro à função. Desta forma, a função receberá uma string e uma sequência de um ou mais caracteres, que representa um separador, onde cada porção da string entre separadores será um elemento do array retornado. Strtokarr (expressao, delimitador). É extremamente útil quando concatenamos uma série de strings e depois queremos organizar num vetor.

cString := "02,03,04,05,06,07,08,09,10,11,12,13"
aString := strtokarr (cString, ",")
for nString := 1 to len(aString)
    msgalert(aString[nString])
next
Outra função interessante é a SEPARA(), pode-se parsear uma string de elementos a partir de um determinado separador , sendo retornado um Array com os elementos identificados na String. Atenção: Para realizar a análise de uma string, cujo delimitador tenha apenas 1 byte, e as ocorrências de dois separadores juntos sejam ignoradas na geração do array, a função separa() utiliza a função StrTokArr(), função escrita em C no Protheus Server, mais rápida para este processamento. Apenas existe a necessidade de utilizarmos a função Separa() caso as ocorrências de dois separadores juntas devam ser consideradas no array de resultado e/ou a string utilizada como separador possua mais que 1 byte de tamanho.

Sintaxe

SEPARA ( < cString > , < cToken > , < lEmpty > ) --> aTokens

Parâmetros

Argumento

Tipo

Descrição

cString

Caracter

String com a sequência de caracteres a ser "parseada"

cToken

Caracter

cToken corresponde à string a ser utilizada como separador para delimitar as informações.

lEmpty

Caracter

lEmpty identifica se caso um intervalo vazio entre tokens deve ser retornado como um elemento do array. Caso não especificado , o Default é .T.

 
aInfo := Separa('1,2,,4',',',.f.) // Resulta {'1','2','4'}
aInfo := Separa('1,2,,4',',',.t.) // Resulta {'1','2','','4'}