In questa nuova lezione della nostra guida a MIT App Inventor vediamo come operare con le stringhe di testo. Anche in questo caso abbiamo a disposizione dei blocchi appositi che prendono il nome di Text Blocks o blocchi di testo.
Per prima cosa vediamo come definire una stringa:
Il blocco contrassegnato dai simboli " e " può contenere qualsiasi carattere: lettere, numeri, spazi, simboli speciali. Tutto questo blocco sarà considerato da MIT App Inventor una stringa.
Vediamo ora come compiere le principali operazioni sulle stringhe.
Unire più stringhe
Per unire più stringhe in un unica stringa si usa il blocco join; questo blocco appartiene alla famiglia dei mutators e quindi può essere "ampliato" per collegare più delle due stringhe previste di default.
Operazioni comuni sulle stringhe
Vediamo di seguito i blocchi grazie ai quali è possibile effettuare le operazioni più comuni sulle stringhe:
- trim – elimina eventuali spazi vuoti presenti prima o dopo la stringa
- upcase e downcase – trasforma una stringa, rispettivamene, in minusco e maiuscolo
Misurare la lunghezza di una stringa
Per misurare la lunghezza di una stringa (spazi compresi) si utilizza il blocco length. Il valore restituito sarà, ovviamente, un numero.
Un altro blocco molto utile è is empty il quale consente di verificare se una data stringa è vuota: se la stringa ha lunghezza 0 questo blocco restituisce true, in caso contrario false.
Confrontare due stringhe
Per svolgere questa operazione, MIT App Inventor mette a disposizione il blocco compare texts il quale effettua la comparazione tra due stringhe (posizionate a sinistra e destra del blocco) attraverso gli operatori:
- =
- <
- >
Attraverso il simbolo dell’uguaglianza si verifica, in pratica, se le due stringhe sono identiche; con i simboli di maggiore e minore si verifica, da un punto di vista logico-alfabetico, qual’è la stringa maggiore e quella minore.
Inizia o contiene
Attraverso due appositi blocchi è anche possibile verificare se una data stringa inizia o contiene una data sotto-stringa. I blocchi in questione sono starts at e contains. A questi due bocchi vengono passati due argomenti: la stringa sulla quale effettuare la verifica e la sotto-stringa della quale si desidera verificare l’eventuale presenza.
Il blocco starts at restituirà 0 se la sotto-stringa non è presente, viceversa restituira la posizione del primo carattere della sottostinga all’interno della stringa. Ad esempio: "web" in "mrwebmaster" restituirà 3 perchè questo numero corrisponde alla posizione della lettera "w" all’interno della nostra stringa di riferimento.
Il blocco contains, invece, restituirà semplicemente true o false a seconda che sia stato possibile o meno ritrovare la sotto-stringa all’interno della stringa originale.
Dividere una stringa
Se desideriamo dividere una stringa abbiamo a disposizione diversi blocchi, i pù utilizzati sono:
- split – divide una stringa sulla base di uno specifico separatore (at); restituisce una lista di elementi;
- split at first – divide una stringa sulla base di uno specifico separatore (at) ma questo viene considerato solo una volta, cioè alla prima occorrenza di sinistra verso destra; restituisce una lista di due elementi;
Oltre a questi deve essere menzionato split at spaces che, come è facile intendere, effettua la divisione della stringa sulla base degli spazi restituendo una lista di elementi.
Tagliare una stringa
Se desideriamo tagliare una stringa possiamo ricorrere al blocco segment.
Questo blocco richiede tre argomenti: la stringa che si desidera tagliare, il carattere di partenza (valore numerico corrispondente alla posizione) e la lunghezza attesa per la sotto-stringa che dovrà essere prodotta. Ad esempio:
- text: "mrwebmaster"
- start: 3
- lehgth: 3
produrrà: "web"
Effettuare sostituzioni
E’ possibile effettuare sostituzioni all’interno di una stringa utilizzando il blocco replace all.
Grazie a questo blocco saranno sostituite all’interno della stringa specificata in text tutte le occorrenze di segment con replacement. Ad esempio:
- text: "mrwebmaster"
- segment: "mr"
- replacement: "mister"
produrrà: "misterwebmaster"