7
votes

Tableau insensible à l'affaire Lua

J'essaie de programmer un addon pour WOW (à Lua). C'est un filtre de discussion basé sur des mots spécifiques. Je ne peux pas comprendre comment obtenir la matrice de ces mots insensibles, de sorte que toute combinaison majuscule / minuscule du mot correspond à la matrice. Toute idée serait grandement appréciée. Merci! XXX


0 commentaires

3 Réponses :


6
votes

Utilisez si msg: inférieur (): Rechercher (Word: inférieur (), 1, true) puis >

==> Il est inférieur aux deux arguments à String.find: insensibilité au cas. Aussi j'ai utilisé string.find parce que vous voulez probablement l'option "plaine", qui n'existe pas pour string.match. P>

Vous pouvez également revenir facilement sur le premier mot trouvé: p>

for _ , keyword in ipairs(keywords) do
    if msg:lower():find( keyword:lower(), 1, true ) then return true end
end
return false


0 commentaires

2
votes

Vous pouvez également arranger cela avec des métabiles, de manière entièrement transparente: xxx

de cette façon, la table peut être indexée dans le cas de la même manière. Si vous y ajoutez de nouveaux mots, cela les augmentera automatiquement aussi. Vous pouvez même l'ajuster pour permettre la correspondance avec des motifs ou tout ce que vous souhaitez.


0 commentaires

4
votes
  1. Définissez les mots-clés en dehors de la fonction. Sinon, vous recréez Table à chaque fois pour Thorw It Hors les moments, le temps perdu sur la création et GC. LI>
  2. convertir des mots-clés en patch qui correspondent lettres majuscules et minuscules. li>
  3. Vous n'avez pas besoin de données capturées à partir de la chaîne, utilisez donc string.find pour la vitesse. Li>
  4. selon votre Logic, si vous avez plus d'un match, vous signalez "Faux". Puisque Vous n'avez besoin que d'un match, vous n'avez pas besoin de les compter. Juste revenir Faux dès que tu l'as frappé. Vous fait gagner du temps pour vérifier tous mots restants aussi. Si plus tard, vous décidez que vous voulez plus d'un match, vous feriez encore mieux de vérifier à l'intérieur de la boucle et de revenir dès que possible Vous avez atteint le nombre désiré. li>
  5. n'utilise pas iapairs. Il est plus lent que simple pour la boucle de 1 à la longueur de la matrice et les iparrières sont obsolètes à Lua 5.2 de toute façon. P>

    p> blockQuote>

    true
    false
    false
    false
    true
    

0 commentaires