Difference between revisions of "LlSubStringIndex/fr"

From Second Life Wiki
Jump to navigation Jump to search
(Localized to french)
 
(proofreading)
 
Line 4: Line 4:
|return_type=integer|p1_type=string|p1_name=source|p2_type=string|p2_name=motif
|return_type=integer|p1_type=string|p1_name=source|p2_type=string|p2_name=motif
|func_footnote=Si le '''motif''' n’est pas trouvé dans la '''source''', la fonction renvoie la valeur {{HoverText|-1|nombre négatif, 0x{{LSL_Hex/Write|-1}}}}.<br/>
|func_footnote=Si le '''motif''' n’est pas trouvé dans la '''source''', la fonction renvoie la valeur {{HoverText|-1|nombre négatif, 0x{{LSL_Hex/Write|-1}}}}.<br/>
L’index du premier caractère du string est {{HoverText|0|zéro}}
Remarque : L’index du premier caractère d'une chaine est {{HoverText|0|zéro}}
|func_desc
|func_desc
|return_text=correspondant à l’index du '''motif''' dans la '''source'''.
|return_text=correspondant à l’index du premier caractère de la chaine '''motif''' dans la chaine '''source'''.
|spec
|spec
|caveats=*Réalise un contrôle littéral (sensible aux majuscules).
|caveats=*Réalise un contrôle littéral (sensible aux majuscules).
Line 13: Line 13:
|constants
|constants
|examples=Contrôle sur le nom:
|examples=Contrôle sur le nom:
<pre>
<lsl>
default
default
{
{
Line 29: Line 29:
         //par ailleurs vous pourriez également contrôler le prénom avec "Prénom " (espace à la fin)
         //par ailleurs vous pourriez également contrôler le prénom avec "Prénom " (espace à la fin)
         for(i = 0; i < NumDet; ++i)
         for(i = 0; i < NumDet; ++i)
             if(~llSubStringIndex(llDetectedName(i), " Linden"))
        {
                llInstantMessage(llDetectedKey(i), "Vu !");
             if(~llSubStringIndex(llDetectedName(i), " Linden")) llInstantMessage(llDetectedKey(i), "Vu !");
        }
     }
     }
}
}
</pre>
</lsl>
|helpers=
|helpers=
Tests pour voir si un string contient une copie d’un autre string :
Tests pour voir si un string contient une copie d’un autre string :
Line 39: Line 40:
1. Concis & conventionnel:
1. Concis & conventionnel:


<pre>
<lsl>
integer Contient(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex
integer Contient(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex
{
{
     return 0 <= llSubStringIndex(source, motif);
     return 0 <= llSubStringIndex(source, motif);
}
}
</pre>
</lsl>


<pre>
<lsl>
integer Débute_avec(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex
integer Commence_par(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex
{
{
return llGetSubString(source, 0, llStringLength(motif) - 1) == motif;
return llGetSubString(source, 0, llStringLength(motif) - 1) == motif;
}
}
</pre>
</lsl>


<pre>
<lsl>
integer Termine_avec(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex
integer Termine_par(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex
{
{
return llGetSubString(source, -llStringLength(motif), -1) == motif;
return llGetSubString(source, -llStringLength(motif), -1) == motif;
}
}
</pre>
</lsl>


Note: certaines des fonctions précédentes fonctionnent sans même utiliser llSubStringIndex.
Note: certaines des fonctions précédentes fonctionnent sans même utiliser llSubStringIndex.
Line 65: Line 66:
2. Plus ingénieux et plus court (~54 bytes au lieu ~60):
2. Plus ingénieux et plus court (~54 bytes au lieu ~60):


<pre>
<lsl>
integer Contient(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex
integer Contient(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex
{
{
     return ~llSubStringIndex(source, motif);
     return ~llSubStringIndex(source, motif);
}
}
</pre>
</lsl>


Note: llSubStringIndex renvoie -1 uniquement lorsque le motif n’est pas trouvé, l’opérateur ~ renvoie zéro uniquement pour -1, ainsi ~llSubStringIndex renvoie zéro uniquement lorsque le motif n’a pas été trouvé.
Note: llSubStringIndex renvoie -1 uniquement lorsque le motif n’est pas trouvé, l’opérateur ~ renvoie zéro uniquement pour -1, ainsi ~llSubStringIndex renvoie zéro uniquement lorsque le motif n’a pas été trouvé.

Latest revision as of 02:26, 27 June 2008

Description

Fonction: integer llSubStringIndex( string source, string motif );

Renvoie un integer correspondant à l’index du premier caractère de la chaine motif dans la chaine source.

• string source
• string motif

Si le motif n’est pas trouvé dans la source, la fonction renvoie la valeur -1.
Remarque : L’index du premier caractère d'une chaine est 0

Avertissements

  • Réalise un contrôle littéral (sensible aux majuscules).
    • Wildcards et RegEx ne fonctionnent pas.
  • Tenter de rechercher un motif vide ("") renverra 0 au lieu de -1.

Exemples

Contrôle sur le nom: <lsl> default {

   state_entry()
   {
       llSensorRepeat("", NULL_KEY, AGENT, PI, 96.0, 20);
   }
   
   sensor(integer NumDet)
   {
       integer i;
       
       //Contrôle l’existence du nom " Linden", avec un espace au début 
       //cette astuce permet de contrôler exhaustivement tous les noms.
       //par ailleurs vous pourriez également contrôler le prénom avec "Prénom " (espace à la fin)
       for(i = 0; i < NumDet; ++i)
       {
           if(~llSubStringIndex(llDetectedName(i), " Linden")) llInstantMessage(llDetectedKey(i), "Vu !");
       }
   }

} </lsl>

Codes utiles

Tests pour voir si un string contient une copie d’un autre string :

1. Concis & conventionnel:

<lsl> integer Contient(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex {

   return 0 <= llSubStringIndex(source, motif);

} </lsl>

<lsl> integer Commence_par(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex { return llGetSubString(source, 0, llStringLength(motif) - 1) == motif; } </lsl>

<lsl> integer Termine_par(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex { return llGetSubString(source, -llStringLength(motif), -1) == motif; } </lsl>

Note: certaines des fonctions précédentes fonctionnent sans même utiliser llSubStringIndex.


2. Plus ingénieux et plus court (~54 bytes au lieu ~60):

<lsl> integer Contient(string source, string motif) // http://wiki.secondlife.com/wiki/llSubStringIndex {

   return ~llSubStringIndex(source, motif);

} </lsl>

Note: llSubStringIndex renvoie -1 uniquement lorsque le motif n’est pas trouvé, l’opérateur ~ renvoie zéro uniquement pour -1, ainsi ~llSubStringIndex renvoie zéro uniquement lorsque le motif n’a pas été trouvé.

Note: cette version n'est pas clairement plus rapide ou plus lente selon l’analyseur de performance et le testeur d’efficacité avec l’expression :
{ contient("wiki.secondlife.com", "wiki"); }.

Voir également

Fonctions

•  llListFindList Trouve un list dans un autre list
•  llGetSubString Extrait un string d’un autre string
Vous cherchez encore des informations ? Peut-être cette page du LSLwiki pourra vous renseigner.