Advertisement
salahzar

Lezione Script Base: le stringhe 23032008

Feb 16th, 2020
452
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.07 KB | None | 0 0
  1. Corso di Base Ciclo 2: Stringhe e Liste
  2.  
  3. 0. Propedeutico:
  4. ==========
  5.  
  6. 1 - Ricordatevi di avere attivo il gruppo "Second Life Italian Mentor"
  7. 2 - Quando rezzate i box fateli "share with group" e full permissions (copy/modify/transfer)
  8. 3 - Gli script dentro i box fateli "share with group" e full permissions (copy/modify/transfer)
  9.  
  10. Questo serve perchè in caso di problemi io possa vedere ed eventualmente correggere i vostri script.
  11. [[L'esperienza della prima parte del corso evidenzia che occorre un sistema di controllo del genere]]
  12.  
  13. Cliccate anche sulla scatola distributrice per avere questa notecard e tutto il materiale del corso.
  14.  
  15.  
  16. 1. Costruite un box con il seguente script "scheletro":
  17. =================================
  18.  
  19. default
  20. {
  21. state_entry()
  22. {
  23. llListen(10,"",llGetOwner(),"");
  24. }
  25.  
  26. listen(integer channel, string name, key avkey, string str)
  27. {
  28.  
  29. // Qui viene fatto l'esercizio
  30. string result=str;
  31.  
  32.  
  33. llOwnerSay(result);
  34.  
  35. }
  36. }
  37.  
  38. Questo vi consente di NON disturbare i vicini. Per parlare al vostro oggetto scrivete
  39. /10 qualcosa
  40. e l'oggetto scriverà SOLO a voi
  41. Object: qualcosa
  42.  
  43.  
  44.  
  45. 2. Funzioni per la gestione delle stringhe.
  46. =========================
  47.  
  48. Le stringhe sono MOLTO importanti per i vostri script, quindi DOVETE conoscerle bene.
  49. In questo corso accanto ad ogni funzione di stringa viene anche indicato a cosa potrebbe essere utile.
  50.  
  51. Gestione elementare delle stringhe:
  52.  
  53. string x="Questa è una stringa";
  54. string sGLOBAL="Stringa globale";
  55. I global vanno scritti all'inizio del programma!!!
  56. ====>
  57. 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ì:
  58.  
  59. string sOK="OK";
  60. ....
  61. llSay(0,sOK);
  62.  
  63. perchè così se invece di OK volete scrivere in un altro momento "JA" oppure "Corretto", lo potete fare
  64.  
  65. 3. I caratteri e la lunghezza di una stringa
  66. ==========================
  67.  
  68. Una stringa è composta da "caratteri".
  69.  
  70. Per conoscere il numero di caratteri in una stringa:
  71. -------------------------------------------------------
  72. integer llGetStringLength(string src)
  73.  
  74. esempio llGetStringLength("ciao!") ritorna il NUMERO 5. Se dovete visualizzarlo in una llSay, aggiungete (string) in testa:
  75.  
  76. llSay(10,"La lunghezza è "+(string)llGetStringLength(str));
  77.  
  78.  
  79. Modificate lo scheletro in modo da visualizzare la lunghezza in caratteri di quello che scrivete
  80. ====>
  81. A cosa serve: è importante poter conoscere quanti caratteri ha una stringa. Vedi più oltre, ma intanto considerate lo script:
  82. integer i;
  83. for(i=0;i<llGetStringLength(str);i++)
  84. {
  85. llOwnerSay("Il carattere #"+(string)i+" è: "+llGetSubString(str,i,i);
  86. }
  87.  
  88. 4. Confrontare una stringa con un'altra o con una stringa nota:
  89. =======================================
  90.  
  91. Usate
  92. == per è uguale a,
  93. != per è diversa da
  94.  
  95. if(str=="") llOwnerSay("vuota"); else llOwnerSay("piena");
  96.  
  97. Mettete nello scheletro questo test in modo che vi dica se la stringa è vuota o meno
  98.  
  99. ===>
  100. A cosa serve:
  101. 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.
  102.  
  103. 5. Concatenare due stringhe:
  104. ==================
  105.  
  106. Usate + per "congiungere" due o più stringhe. NOTA: non è una addizione aritmetica e non esiste il "-"
  107.  
  108. string str="pippo";
  109. string a="str "+str;
  110.  
  111. produce in a il valore "str pippo"
  112.  
  113. Esempio: provate nello scheletro a mettere llOwnerSay("raddoppio la stringa: "+str+"-"+str);
  114.  
  115. ===>
  116. A cosa serve:
  117. E' usatissima specie per visualizzare a video delle informazioni di debug. O comunque informative. O per creare stringhe più complesse.
  118.  
  119. 6. Estrarre il primo carattere di una stringa:
  120. ===========================
  121.  
  122. string char=llGetSubString(str,0,0);
  123.  
  124. estrerre l'ultimo carattere di una stringa:
  125.  
  126. string lastchar=llGetSubString(str,-1,-1);
  127.  
  128. Notate che l'ordinamento dei caratteri va da 0: il primo carattere a -1: l'ultimo carattere. -2 rappresenta il penultimo carattere.
  129.  
  130. ===>
  131. A cosa serve:
  132.  
  133. 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).
  134.  
  135. 7. Modificare una stringa: Metterla in maiuscolo o minuscolo
  136. -------------------------------------------------
  137. string upper=llToUpper("ciao"); restituisce "CIAO"
  138. string lower=llToLower("CiaO"); restituisce "ciao"
  139.  
  140. ====>
  141. 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
  142.  
  143. 8. Cercare una sottostringa
  144. =================
  145.  
  146. integer llSubStringIndex("tanto va la gatta al lardo","gatta");
  147.  
  148. restituisce l'indice in cui compare "gatta" dentro la frase. 0=a partire dal primo carattere e così via.
  149.  
  150. ====> A cosa serve
  151.  
  152. Importantissima per cercare delle informazioni in una stringa per poterle cancellarle e/o manipolarle.
  153.  
  154. 9. Modificare una stringa.
  155.  
  156. Non si può modificare una stringa senza riassegnarla:
  157. -----------------------------------------------------------
  158.  
  159. string src=llDeleteSubString(src,0,0); cancella il primo carattere di una stringa
  160.  
  161. se src era "Ciao!", dopo la nuova src diventa "iao!";
  162.  
  163. ====> A cosa serve:
  164. eliminare delle cose non volute nell'input:
  165.  
  166. integer found=1;
  167. while(found==1)
  168. {
  169. integer found=llSubStringIndex(str,stringanonvoluta);
  170. if(found>=0)
  171. {
  172. str=llDeleteSubString(str,found,found+llGetStringLength(stringanonvoluta));
  173. }
  174. }
  175.  
  176.  
  177. 10. Inserire in mezzo ad una stringa:
  178. =======================
  179.  
  180. string modified=llInsertString("new",1,"ciao");
  181.  
  182. produrrà la stringa "cnewiao"
  183.  
  184. ===> A cosa serve:
  185. Per inserire informazioni extra dentro una stringa:
  186.  
  187. integer found=llSubStringIndex(str,":");
  188. if(found>=0)
  189. {
  190. str=llInsertString("56",found+1,"Il valore è: controlla");
  191. }
  192.  
  193. Str varrà: "Il valore è: 56 controlla";
  194.  
  195.  
  196.  
  197. 11. Rimuovere gli spazi da una stringa:
  198. ========================
  199.  
  200. string stringa_pulita=llStringTrim(str,STRIM_TRIM);
  201.  
  202. toglie gli spazi in testa ed in fondo
  203.  
  204. usate STRING_TRIM_HEAD per togliere solo gli spazi in testa
  205. usate STRING_TRIM_TAIL per togliere solo gli spazi in coda
  206.  
  207. 12. Contenuti speciali dentro le stringhe:
  208. ==========================
  209. \t = 4 spazi
  210. \n = interrompi riga (vai a capo) utilissima per llSetText ed altri
  211. \" = per inserire dei doppi apici
  212. \\ = per inserire una barra rovescia
  213.  
  214. string llEscapeURL(string) ritorna una stringa valida per HTTP, ma anche utile per VEDERE esattamente il contenuto della stringa.
  215. string llUnescapeURL(string)
  216.  
  217. 13. Funzioni stringa evolute:
  218. ==================
  219. * string llBase64ToString(string) trasforma un contenuto "binario" in stringa
  220. * string llMD5String(string src,integer nonce) "firma" un documento (sicurezza)
  221. * string llStringToBase64(string str) trasforma una stringa in "binario"
  222. * string llXorBase64StringCorrect(string s1, strings2) applica una chiave ad una stringa (sicurezza).
  223.  
  224. Prossima lezione sulle liste e sul modo di passare da stringhe a liste e viceversa. :)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement