salahzar icon

Lezione Script Base: le stringhe 23032008

salahzar | PRO | 02/16/20 08:05:27 AM UTC | 0 ⭐ | 803 👁️ | Never ⏰ | []
text |

7.07 KB

|

None

|

0 👍

/

0 👎

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