La funzione Split

 

Una utile funzione che il VB ed il VBA ci mettono a disposizione è la funzione Split.

Questa funzione, data una stringa complessa e dato un carattere separatore in essa inclusa, restituisce tutte le sottostringhe di cui la stringa originale è composta.

Una stringa "Questa è una bella giornata" in cui il carattere separatore è " " (spazio) restituisce cinque sottostringhe: "Questa", "è", "una", "bella", "giornata".

La sintassi con cui viene chiamata la funzione è la seguente:

Split(stringa[, carattere separatore[, n. elementi restituiti[, compare metod]]])

La funzione restituisce le sottostringhe trovate in una matrice ad indice 0 (zero). L'unico argomento obbligatorio è il primo che rappresenta la stringa da elaborare. Tutti gli altri argomenti sono facoltativi.

stringa:

L'argomento è obbligatorio e si riferisce alla stringa che dovremo elaborare

carattere separatore:

Può essere un qualsiasi carattere ma se omesso, viene automaticamente cercato come delimitatore il carattere spazio (" ")

Se il carattere separatore è di lunghezza zero (""), verrà restituita una matrice di un solo elemento contenente l'intera stringa. Ma in questo caso non penso abbia senso far riferimento a questa funzione.

Può essere rappresentato da uno o più caratteri: (" "), ("abc"), (" /"). In questo caso la stringa originale viene divisa ogni volta viene incontrata questa serie di caratteri.

n. elementi restituiti:

Se omesso assume il valore di default -1 ed in questo caso restituisce tutte le sottostringhe di cui la stringa principale è composta

altrimenti restituisce il numero di sottostringhe indicato dove le prime rispettano come punto di separazione il carattere separatore indicato e l'ultima rappresenta tutta la parte residua della stringa originaria Il numero indicato specifica il numero di sottostringhe desiderato (da uno all'ultima) non l'indice della matrice (da zero all'ultima meno uno)

compare metod

è facoltativo ma può essere espresso per indicare se il confronto deve essere eseguito tenendo conto delle maiuscole e minuscole o meno (vbTextCompare esegue la ricerca non sensibile a lettere maiuscole o minuscole). Se l'argomento viene omesso la ricerca tiene conto delle lettere maiuscole o minuscole.

Questa funzione può essere usata per trovare tutti gli elementi delimitati da uno o più caratteri separatori.

Una particolarità di questa funzione sta nel fatto che io posso inizializzare la variabile che dovrà accogliere tutte le sottostringhe come matrice può essere inizializzata come una semplice variabile e non come matrice per cui basta un banale: Dim B.

Tutti gli elementi trovati ed estratti da una stringa originale vengono depositati in questa variabile come matrice monodimensionale ad indice 0 (zero). Se mettiamo in una variabile, per esempio nella variabile "a" una stringa del genere: "Questa è una bella giornata" e poi diamo l'istruzione:

B = Split(a, " ")

oppure:

B = Split(a, " ", 3)

avremo in "B" una matrice ad indice 0 come indicato nei due riquadri:

riquadro1 riquadro2

b(0) = Questa
b(1) = è
b(2) = una
b(3) = bella
b(4) = giornata


b(0)= Questa
b(1)= è
b(2)= una bella giornata

Così con "B = Split(a)" o con "B = Split(a, " ")":

se abbiamo una stringa "Questa è una bella giornata" come risultato avremo:

"Questa" " è" "una" " bella" "giornata"

se abbiamo: "35031 VEN PD  049 Abano Terme Bagni" come risultato avremo:

"35031" " VEN" "PD" "vuota" "49" " Abano" "Terme" " Bagni"