Corso di Base Ciclo 2: Stringhe e Liste
0. Propedeutico:
==========
1 - Ricordatevi di avere attivo il gruppo "Second Life Italian Mentor"
2 - Quando rezzate i box fateli "share with group" e full permissions (copy/modify/transfer)
3 - Gli script dentro i box fateli "share with group" e full permissions (copy/modify/transfer)
Questo serve perchè in caso di problemi io possa vedere ed eventualmente correggere i vostri script.
[[L'esperienza della prima parte del corso evidenzia che occorre un sistema di controllo del genere]]
Cliccate anche sulla scatola distributrice per avere questa notecard e tutto il materiale del corso.
1. Costruite un box con il seguente script "scheletro":
=================================
default
{
state_entry()
{
llListen(10,"",llGetOwner(),"");
}
listen(integer channel, string name, key avkey, string str)
{
// Qui viene fatto l'esercizio
string result=str;
llOwnerSay(result);
}
}
Questo vi consente di NON disturbare i vicini. Per parlare al vostro oggetto scrivete
/10 qualcosa
e l'oggetto scriverà SOLO a voi
Object: qualcosa
2. Funzioni per la gestione delle stringhe.
=========================
Le stringhe sono MOLTO importanti per i vostri script, quindi DOVETE conoscerle bene.
In questo corso accanto ad ogni funzione di stringa viene anche indicato a cosa potrebbe essere utile.
Gestione elementare delle stringhe:
string x="Questa è una stringa";
string sGLOBAL="Stringa globale";
I global vanno scritti all'inizio del programma!!!
====>
A cosa serve: ad impostare un valore costante. Usatissimo nei programmi. E' obbligatorio usare delle costanti per tutte le stringhe che potrebbero mutare. Quindi sì:
string sOK="OK";
....
llSay(0,sOK);
perchè così se invece di OK volete scrivere in un altro momento "JA" oppure "Corretto", lo potete fare
3. I caratteri e la lunghezza di una stringa
==========================
Una stringa è composta da "caratteri".
Per conoscere il numero di caratteri in una stringa:
-------------------------------------------------------
integer llGetStringLength(string src)
esempio llGetStringLength("ciao!") ritorna il NUMERO 5. Se dovete visualizzarlo in una llSay, aggiungete (string) in testa:
llSay(10,"La lunghezza è "+(string)llGetStringLength(str));
Modificate lo scheletro in modo da visualizzare la lunghezza in caratteri di quello che scrivete
====>
A cosa serve: è importante poter conoscere quanti caratteri ha una stringa. Vedi più oltre, ma intanto considerate lo script:
integer i;
for(i=0;i<llGetStringLength(str);i++)
{
llOwnerSay("Il carattere #"+(string)i+" è: "+llGetSubString(str,i,i);
}
4. Confrontare una stringa con un'altra o con una stringa nota:
=======================================
Usate
== per è uguale a,
!= per è diversa da
if(str=="") llOwnerSay("vuota"); else llOwnerSay("piena");
Mettete nello scheletro questo test in modo che vi dica se la stringa è vuota o meno
===>
A cosa serve:
Fondamentale per fare fare al vostro programma strade diverse a seconda di quello che ha introdotto l'avatar o situazioni particolari rappresentate da eventi o stringhe.
5. Concatenare due stringhe:
==================
Usate + per "congiungere" due o più stringhe. NOTA: non è una addizione aritmetica e non esiste il "-"
string str="pippo";
string a="str "+str;
produce in a il valore "str pippo"
Esempio: provate nello scheletro a mettere llOwnerSay("raddoppio la stringa: "+str+"-"+str);
===>
A cosa serve:
E' usatissima specie per visualizzare a video delle informazioni di debug. O comunque informative. O per creare stringhe più complesse.
6. Estrarre il primo carattere di una stringa:
===========================
string char=llGetSubString(str,0,0);
estrerre l'ultimo carattere di una stringa:
string lastchar=llGetSubString(str,-1,-1);
Notate che l'ordinamento dei caratteri va da 0: il primo carattere a -1: l'ultimo carattere. -2 rappresenta il penultimo carattere.
===>
A cosa serve:
Potete usarlo per verificare che il primo carattere valga un certo valore. (Per poterlo eliminare, oppure per verificare delle abbreviazioni senza controllare tutto il codice).
7. Modificare una stringa: Metterla in maiuscolo o minuscolo
-------------------------------------------------
string upper=llToUpper("ciao"); restituisce "CIAO"
string lower=llToLower("CiaO"); restituisce "ciao"
====>
A cosa serve: per evitare di essere confusi dall'input del avatar se chiedete che risponda "fai" e lui scrive Fai il test non funzionerebbe
8. Cercare una sottostringa
=================
integer llSubStringIndex("tanto va la gatta al lardo","gatta");
restituisce l'indice in cui compare "gatta" dentro la frase. 0=a partire dal primo carattere e così via.
====> A cosa serve
Importantissima per cercare delle informazioni in una stringa per poterle cancellarle e/o manipolarle.
9. Modificare una stringa.
Non si può modificare una stringa senza riassegnarla:
-----------------------------------------------------------
string src=llDeleteSubString(src,0,0); cancella il primo carattere di una stringa
se src era "Ciao!", dopo la nuova src diventa "iao!";
====> A cosa serve:
eliminare delle cose non volute nell'input:
integer found=1;
while(found==1)
{
integer found=llSubStringIndex(str,stringanonvoluta);
if(found>=0)
{
str=llDeleteSubString(str,found,found+llGetStringLength(stringanonvoluta));
}
}
10. Inserire in mezzo ad una stringa:
=======================
string modified=llInsertString("new",1,"ciao");
produrrà la stringa "cnewiao"
===> A cosa serve:
Per inserire informazioni extra dentro una stringa:
integer found=llSubStringIndex(str,":");
if(found>=0)
{
str=llInsertString("56",found+1,"Il valore è: controlla");
}
Str varrà: "Il valore è: 56 controlla";
11. Rimuovere gli spazi da una stringa:
========================
string stringa_pulita=llStringTrim(str,STRIM_TRIM);
toglie gli spazi in testa ed in fondo
usate STRING_TRIM_HEAD per togliere solo gli spazi in testa
usate STRING_TRIM_TAIL per togliere solo gli spazi in coda
12. Contenuti speciali dentro le stringhe:
==========================
\t = 4 spazi
\n = interrompi riga (vai a capo) utilissima per llSetText ed altri
\" = per inserire dei doppi apici
\\ = per inserire una barra rovescia
string llEscapeURL(string) ritorna una stringa valida per HTTP, ma anche utile per VEDERE esattamente il contenuto della stringa.
string llUnescapeURL(string)
13. Funzioni stringa evolute:
==================
* string llBase64ToString(string) trasforma un contenuto "binario" in stringa
* string llMD5String(string src,integer nonce) "firma" un documento (sicurezza)
* string llStringToBase64(string str) trasforma una stringa in "binario"
* string llXorBase64StringCorrect(string s1, strings2) applica una chiave ad una stringa (sicurezza).
Prossima lezione sulle liste e sul modo di passare da stringhe a liste e viceversa. :)
Comments