/* Ce script permet de remplacer toutes les occurences d'un caractère par un autre caractère ; il fait de même avec toutes les occurences d'une chaîne par une autre. */
integer iChan = 17;
////////////////////////////////////////// //String Replace Function: from an idea of Chad Statosky, completed by Strife Onizuka, //humanized by Garmin Kawaguichi string $StringReplaceString(string sFrom, string sTo, string sSource) //sFrom replace sTo in sSource { integer iLngFrom = llStringLength(sFrom) - 1; if(iLngFrom > -1) { string sCopySource = sSource; integer iPointer = -1; integer iLngTo = llStringLength(sTo) - 1; @loop; //Oh le joli bug de l'éditeur LSL qui teint toute la ligne en bleu!!!. integer iPnt2Repl = llSubStringIndex(sCopySource, sFrom) + 1; if(iPnt2Repl) { sCopySource = llGetSubString(sSource = llInsertString(llDeleteSubString(sSource, iPointer += iPnt2Repl, iPointer + iLngFrom), iPointer, sTo), (iPointer += iLngTo) + 1, -1); jump loop; } } return sSource; } //////////////////////////////////////////
default { state_entry() { llListen(iChan, "", llGetOwner(), ""); //uniquement l'owner } listen(integer iChanRec, string sName, key kId, string sMessaj) { //utilisation de la fonction pour remplacer "o" par "?" string sMessaj2 = $StringReplaceString("o", "?", sMessaj); //en enchaînant les appels à la fonction, on effectue plusieurs remplacements string sMessaj3 = $StringReplaceString("O", "?", sMessaj2); string sMessaj4 = $StringReplaceString("a", "?", sMessaj3); string sMessaj5 = $StringReplaceString("A", "?", sMessaj4); llSay(0, sMessaj5);
//Les 4 appels précédents peuvent tenir sur une seule ligne en appelant la fonction comme 3ème paramètre (spectaculaire mais vite illisible) //Pour les curieux : ça fait la même chose que les 4 appels précédents, mais dans l'ordre inverse (si l'auteur était moins fainéant, il aurait pû mieux faire...) //llSay(0, $StringReplaceString("O", "?", $StringReplaceString("o", "?", $StringReplaceString("a", "?", $StringReplaceString("A", "?", sMessaj)))));
//Ça marche aussi pour des chaînes de caractères : //llSay(0, $StringReplaceString("Coucou", "Salut vieille mule!!!", sMessaj)); } on_rez(integer iPnum) { llResetScript(); } }
/* Placer ce script dans une prim. Dans le chat entrer /17 Ah bonjour petit Nicolas qui aime le chocolat. La prim affichera dans le chat la chaîne modifiée. */
|