0
votes

Comment rechercher dans la liste toujours correspondre

Je veux la recherche de match dans une liste. J'ai des noms de Dir exemple: xxx pré>

et je veux vérifier s'il est dans la liste (le majuscule doit être ignoré). P>

bind pub "-|-" !tt tt
proc tt {nick host handle channel arg} {

    set name [lindex [split $arg] 0]
    set groups {aa BB Cc DD Ee Ff gg hh}

    if {[lsearch -inline $groups $name] != -1} {
        putnow "PRIVMSG $channel :match name $name"
    }
}


1 commentaires

Quelle est la valeur de $ arg ?


4 Réponses :


0
votes

Vous avez spécifié le paramètre "-Inline" à lSearch. Il renvoie la chaîne de match ou vide. Donc, il n'est toujours pas égal à -1. Essayez de supprimer le paramètre "-Inline". En outre, vous souhaitez probablement utiliser le paramètre "-exact".

Référence: https://www.tcl.tk/man /tcl8.6/tclcmd/lsearch.htm


2 commentaires

Lorsque j'utilise -Inline, il ne s'agit que d'un match lorsque $ nom BB est exactement des correspondances, avec bb.oiwerwer ne fonctionne pas


Il n'est pas possible d'utiliser de simples lSearch pour vos modèles. Vous devriez faire boucle à travers tous les composants de votre nom $ . Par exemple: foreach partie [Split $ nom de nom.] {Si {[lsearch -exact $ regroupements $ partie]! = -1} {punow "privoung $ canal: ...."; "; break}}



1
votes

Si j'ai bien compris, vous voulez savoir si un élément de la liste Groupes correspond aux exemples de noms DIR. Si tel est le cas, vous devez utiliser une boucle avec String Match : xxx

Test CodePAD


0 commentaires

0
votes

Si vous pouvez organiser votre liste de choses dans un cas dans un cas (par exemple, minuscule), vous pouvez utiliser [string tolower] et le dans opérateur faire la recherche. Ceci est plus simple que lSearch car il produit un résultat binaire propre: xxx


0 commentaires

0
votes

Votre question est un peu floue, mais assemblant des indices, vous voudrez peut-être: xxx

qui sortira xxx

ou, Beaucoup plus terres est: xxx xxx


0 commentaires