Non occorre che stiate progettando un word processor per comprendere quanto sia importante avere a disposizione gli strumenti giusti per trattare correttamente le stringhe: in molte applicazioni risulta infatti indispensabile saper lavorare efficacemente su ciò che viene inserito da tastiera.
Nelle precedenti lezioni abbiamo già avuto modo di imbatterci nel tipo di dati String e nella sua dichiarazione.
A questo punto ci sembra interessante presentare alcune modalità volte alla manipolazione delle stringhe di carattere. Non occorre che stiate progettando un word processor per comprendere quanto sia importante avere a disposizione gli strumenti giusti per trattare correttamente le stringhe: in molte applicazioni risulta infatti indispensabile saper lavorare efficacemente su ciò che viene inserito da tastiera.
Left, Right e Mid consentono di recuperare la parte specificata di una stringa di caratteri.
Dim stringa, risultato As String
stringa="questa è una stringa di prova"
risultato = Left(stringa, 6)
Nell’esempio, vengono memorizzati i primi sei caratteri di stringa all’interno della stringa risultato.
Aggiungendo la riga
potremo visualizzare, mediante un message box, il contenuto della stringa risultato
.
La funzione Left permette di recuperare un certo numero di caratteri di una stringa, in maniera sequenziale, da sinistra a destra.
Right, invece, consente di ottenere il numero di caratteri specificati di una stringa partendo da destra.
Nell’esempio seguente
Dim stringa, risultato As String
stringa="questa è una stringa di prova"
risultato = Right(stringa, 5)
la stringa risultato
conterrà infine il valore prova poiché, in questo caso, la funzione Right ha provveduto al recupero dei primi cinque caratteri da destra verso sinistra.
La funzione Mid consente invece di specificare la posizione dalla quale si desidera partire, quindi il numero di caratteri della stringa che devono essere recuperati.
, per esempio, inizia ad esaminare stringa dal quarto carattere, quindi ne memorizza i tre caratteri successivi all’interno della stringa risultato.
Altre importanti funzioni destinate sempre alla trattazione delle stringhe sono LTrim, RTrim e Trim.
Esse consentono, rispettivamente, di ottenere una copia di una stringa senza spazi iniziali, spazi finali o senza spazi iniziali e finali.
Len: il problema delle dimensioni
La funzione Len restituisce invece la lunghezza di una stringa di caratteri. Il suo utilizzo risulta molto spesso necessario quando non si possono conoscere, a priori, le dimensioni di una stringa immessa in input e tuttavia debbono essere applicate funzioni Mid, Left o Right.
Per esempio, vedremo più avanti cosa sono i database e come possono essere utilizzati. Il lettore che non conosce nulla in merito può immaginarsi un database come un archivio destinato ad accogliere un’enorme massa di informazioni. Ciascuna cartellina che inseriremo nel nostro grande archivio (database) sarà denominata record, ed ogni record può contenere vari campi.
L’elenco telefonico può essere considerato un grande database, ogni abbonato elencato costituisce un record; il cognome e nome dell’abbonato, il suo indirizzo e il numero telefonico sono detti campi.
A questo punto il lettore si starà certamente chiedendo a che cosa vale questa divagazione sul tema visto che l’argomento affrontato in questa lezione è essenzialmente la manipolazione delle stringhe.
E’ presto detto. Oltre ad aver anticipato in maniera molto elementare ciò che verrà ampiamente trattato nelle prossime lezioni, l’introduzione al concetto di campo ci può essere utile in questo frangente.
Ogni campo, infatti, non può avere generalmente (vedremo a tempo debito quali sono le eccezioni) una lunghezza illimitata.
Ad esempio, il campo nome dell’elenco telefonico non può contenere un numero infinito di caratteri.
Un buon programmatore dovrà comunque essere in grado di considerare tutte le ipotesi in modo da azzerare drasticamente le possibilità d’errore che creino interruzioni inaspettate nell’esecuzione dell’applicazione o – peggio – che causino mancanze o scorrettezze nella trattazione dei dati.
Supponiamo che il campo “indirizzo” dell’elenco telefonico sia stato impostato, all’interno del database, per ospitare al massimo 60 caratteri.
L’utente che utilizza l’applicazione da noi sviluppata non può sapere di tale – peraltro legittima – limitazione oppure, nel caso sia stato avvertito, può ragionevolmente essersene dimenticato.
Come fare? Ecco che entrano in gioco le funzioni presentate in questa lezione:
Dim stringainput As String
If Len(stringainput) > 60 Then
stringainput = Left(stringainput, 60)
Msgbox "La stringa inserita è troppo lunga. Sono stati memorizzati solo i primi sessanta caratteri.", 48, "Attenzione"
End If
Supposto che stringainput
sia la stringa di carattere inserita dall’utente e proveniente, per esempio, da una textbox, il codice inserito permette di controllare la lunghezza della stringa stessa: se questa è più lunga di sessanta caratteri, interviene la funzione Left che provvedere a recuperarne solamente i primi sessanta caratteri. L’utente vieni quindi avvisato mediante il solito messagebox circa il troncamento della stringa inserita.
Ricerca con InStr e altre funzioni utili
Altra funzione che può risultare utile in molte circostanze è certamente InStr. Essa permette di ricercare una stringa all’interno di un’altra. La sua sintassi è la seguente:
A stringa1
deve essere sostituita la stringa oggetto della ricerca, a stringa2
la stringa da ricercare; al posto di inizio può essere eventualmente specificato il carattere dal quale – da sinistra verso destra – deve iniziare l’operazione di ricerca; confronto permette di specificare il tipo di confronto da eseguire: 0 è l’impostazione predefinita (che quindi piò essere omessa) e permette di effettuare un confronto binario, 1 esegue un confronto testuale senza distinzione fra maiuscole e minuscole, mentre (solo per Microsoft Access) 2 effettua un confronto basato sulle informazioni contenute in un database.
Dim stringa As String
Dim i As Integer
stringa = "Sempre più traffico nelle città così come nel nostro sito..."
i = InStr(stringa, "traffico")
Nell’esempio, viene ricercata all’interno di stringa la parola traffico.
Se i assume un valore superiore a 0 significa che la stringa è stata trovata: il valore restituito corrisponde alla posizione occupata dalla parola ricercata all’interno della stringa oggetto della ricerca.
Nel nostro caso i assumerà il valore 12.
Le funzioni Ucase e Lcase consentono, rispettivamente, di convertire una stringa interamente in caratteri minuscoli ed in caratteri maiuscoli.
Ricordiamo String che permette di creare una stringa di caratteri ripetuti della lunghezza specificata e Space che restituisce una stringa costituita dal numero specificato di spazi. Esempi:
Stringa = String(5, "*") 'Associa a Stringa il valore *****
Spazi = Space(10) 'Restituisce una stringa chiamata Spazi costituita da 10 spazi.
StrComp() permette di eseguire un confronto fra due stringhe. La funzione restituisce il valore -1 nel caso in cui la prima stringa sia minore della seconda, 0 se vale il viceversa.
Str è una funzione molto importante che permette di convertire un valore numerico in una stringa di carattere.
Sì, in questa lezione ci siamo accordi anche noi – usando un linguaggio sfociante quasi nel dialetto "di averla fatta proprio brodosa", purtuttavia ci è sembrato fondamentale presentare funzioni che certamente in futuro potranno risultare utili in più occasioni: la programmazione in Visual Basic non è infatti tutta rose e fiori, talvolta può essere fatta anche di cervellotiche manipolazioni di stringhe.