venerdì 8 agosto 2014

Lavorare con i testi

L'elaborazione dei testi e delle parole è uno dei punti forti di Livecode. Potete modificare i testi, estrarre e cambiare stringhe con comandi molto simili alla lingua parlate inglese. Oggi farò una panoramica di alcuni comandi per i testi.
Per esempio per sapere il numero di parole in un campo basta:

put the number of words in field "text"

Anche per estrarre del testo i comandi sono semplici, immaginate un tabella di testo in formato CSV (quello di esportazione più comune per rubriche ed excel). Potete estrarre, ad esempio, solo il secondo elemento della terza riga così:

item 2 of line 3 of myCSVList

O addirittura fare dei test, ad esempio verificare se un certo elemento è un numero:

if item 2 of line 3 of myCSVList is a number then
   answer "L'elemento in posizione 3B è un numero!"
end if

Unire o aggiungere parole all'inizio di un testo usando before o after è una procedura semplice da ricordare:


   put "Questo è un semplice esempio" into temp
   put word 1 to 3 of temp into temp2
   put " esempio" after temp2
   put "bellissimo " before word -1 of temp2
   answer temp2


Ricordate che quando uste il segno meno vuol dire che si comincia a contare dalla fine.
Quello che potete fare con le parole (word) funziona anche con le righe (lines) e con i caratteri (chars) e gli item :

put line 2 to 4 of vecchioTesto after line 6 of nuovoTesto

put char 3 of vecchioTesto after nuovoTesto

Gli item sono gli elementi  di un testo separati da il carattere definito nella proprietà itemdelimiter, che è impostato sulla virgola, ma potete cambiarlo a vostro piacere.
Per quanto riguarda le ricerche, si può cercare in maniera molto intuitiva con "is ... in":

if "Mario" is in line 3 of esempio then
   answer "Il testo contiene la parola Mario nella terza riga"
end if


Se poi si vuole cercare in un campo di testo visualizzato sullo schermo, potete usare la parola find, che vi evidenzierà sullo schermo la parola, e poi se lo lanciate nuovamente comincerà dall'ultimo risultato continuando nel testo, ad esempio il seguente codice:

on MouseUp
   find "Mario" in field esempio
end MouseUp

dà il seguente risultato la seconda volta che premete il pulsante:
Esistono anche altri sistemi per cercare che esamineremo in un post successivo, tipo matchText e offset.
Potete fare le sostituzioni con replace, esempio:
replace x with y in field esempio

Possiamo anche verificare il testo formattato con tutti gil stili che abbiamo applicato (font, grassetto, corsivo, ecc.) si veda effettivamente bene nel nostro programma:

if the formattedWidth of field "esempio" > the width of field "esempio" then
   #dobbiamo accorciare il testo
end if

Possiamo ordinare le righe di un testo secondo un nostro criterio, ad esempio le date della terza collona:

sort lines of mialista dateTime by word 3 of each