Manipolare le stringhe
Tutti i linguaggi di programmazione mettono a disposizione una serie di comandi per manipolare le stringhe. Ah già, le stringhe sono delle sequenze di caratteri.
Ciao mondo!
È una stringa.
3 etti di spaghetti grossi
È una stringa, nonchè la mia dose quotidiana…
Amor, c'ha nullo amato amar perdona
È una stringa, peraltro molto vecchia, scritta da Dante più di 700 anni fa.
Anche Excel, come fanno tutti i linguaggi di programmazione, mette a disposizione funzioni apposite per manipolare le stringhe.
Perchè occorre saper manipolare le stringhe?
Saper manipolare le stringhe significa poter compiere in fretta delle operazioni noiose.
Per esempio se avessimo un elenco di codici fiscali e volessimo sapere quali siano attribuiti a femmine, la cosa più semplice da fare sarebbe utilizzare STRINGA.ESTRAI.
STRINGA.ESTRAI(indica la stringa su cui lavorare, indica da quale posizione iniziare, quanti caratteri restituire)
STRINGA.ESTRAI(COGNOM91A27; 10;2) restituirebbe 27. Noi sappiamo che i valori inferiori a 31 sono attribuiti ai maschi, gli altri alle femmine (alla data di nascita delle femmine si aggiunge 40, per cui i valori possibili saranno da 41 a 71).
Volendo essere pignoli e ancora più veloci in questo caso basterebbe recuperare solo la prima cifra del giorno se questa è superiore a 3 il codice in questione è stato attribuito ad una femmina.
Come si manipolano le stringhe?
Per manipolare le stringhe si usano funzioni apposite.
- SINISTRA()
- DESTRA()
- STRINGA.ESTRAI()
Altre funzioni danno indicazioni sulla stringa che si sta esaminando, per esempio:
- LUNGHEZZA(stringa) restituisce il numero di caratteri che compongono la stringa.
Atri comandi consentono di costruire una stringa:
- CONCATENA() che ricordiamo essere deprecata e sostituita da CONCAT()
- RIPETI()
- ANNULLA.SPAZI()
- SOSTITUISCI()
Per esempio supponiamo di avere la classica rubrica composta da qualche centinaio di righe:

Nel momento in cui ci viene chiesto di riscriverla ponendo nella stessa cella il cognome tutto maiuscolo seguito dal nome, la prima cosa che pensiamo è che alla follia umana non ci siano limiti. La seconda cosa a cui pensiamo è se c’è un sistema rapido per far fare il lavoro ad Excel!

Abbiamo due modi:
Con primo, nella cella E2, abbiamo scritto la formula (riportata in G2 per comodità di lettura) che sfrutta due funzioni.
CONCATENA(), che ricordiamo essere deprecata dal 2016, non fa altro che unire, attaccare, perlappunto concatenare ciascun parametro che gli abbiamo passato separandolo con un punto e virgola dai successivo.
MAIUSC(), che forza al maiuscolo ogni carattere della stringa che gli si passa.
L’utilizzo della funzione concatena() come della più moderna concat() non mi è chiaro, forse aiuta nella leggibilità delle formule scritte da altri, però a parte questo forse non vedo motivi per preferirla all’uso dell’operatore &.
Nella cella E4 (riportata in G4) abbiamo usato l’operatore & che è semplice e pulito, come l’operatore somma + opera su ciò che gli sta prima e ciò che gli sta dopo producendo la somma algebrica, così fa la e commerciale operando una somma di testi, ossia il concatenamento di ciò che gli sta prima con ciò che gli sta dopo. La formula =”Alfa”&”beto” scritta in una cella darebbe come risultato Alfabeto, il bello avviene quando si utilizzano i riferimenti alle celle come abbiamo fatto nella rubrica.

Un piccolo chiarimento per separare il cognome in maiuscolo dal nome abbiamo messo uno spazio, lo spazio è una stringa di lunghezza 1 e lo si può scrivere velocemente racchiudendolo fra due doppi apici ” “ (doppio pice, barra spaziatrice, doppio apice). In entrambi i modi scritti nelle formule è stato trattato digitato direttamente.
Tanto per imparare ad usare le funzioni per manipolare le stringhe supponiamo che ci abbiano chiesto di formattare le informazioni in questa maniera: GENOVA_____Anna, LIVORNO____Berta dove la lunghezza del risultato deve essere di 14 caratteri. Lasciamo stare il fatto che ci hanno dato un esempio di risultato lungo 15, uno 16 e alla fine vogliono tutto lungo 14…

A cosa possa servire un risultato del genere non ci interessa, una volta che abbiamo capito cosa dobbiamo ottenere dobbiamo solo preoccuparci di farlo fare ad Excel.
In pratica dobbiamo capire da quanti caratteri sono composti il nome e il cognome e poi dobbiamo mettere tanti “_” fino ad arrivare ad ottenere una stringa lunga 14.
Intanto cambio il font della colonna E con un monospace, quello che ci ricorda le macchine per scrivere, così capiamo il perchè dell’assurda richiesta.
Una curiosità: nel 1957 la Olivetti produsse la Graphika una macchina per scrivere meccanica a spaziatura proporzionale!

Volevano un allineamento, discutibile quanto si vuole ma pur sempre un allineamento!
Per soddisfare questa richiesta abbiamo usato:
LUNGHEZZA() che ci restituisce il numero di caratteri che compongono la stringa.
RIPETI() che, manco a farlo apposta, ripete una stringa n volte.
Quando si manipolano le stringhe bisogna fare attenzione a cosa vorremmo ottenere.
Dovremmo chiederci cosa succederebbe nel caso se… in questo caso cosa succcederebbe se il cognome e il nome fossero più lunghi di 14 caratteri? E stabilire cosa fare quando questo accade. Alla riga 5 è successo proprio questo e abbiamo ottenuto un errore in E5.
Forse sarebbe stato meglio decidere cosa fare, magari troncare il nome in maniera da scrivere cognome un solo “_” e ciò che ci sta del nome. Magari scrivere soltanto l’iniziale del nome. Di certo avere la segnalazione di un errore non è una cosa bella!