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.

 

/*
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.
*/

 

 


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.