Je veux la recherche de match dans une liste. J'ai des noms de Dir exemple: 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"
}
}
4 Réponses :
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". P>
Référence: https://www.tcl.tk/man /tcl8.6/tclcmd/lsearch.htm P>
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 code> pour vos modèles. Vous devriez faire boucle à travers tous les composants de votre nom
$ code>. Par exemple:
foreach partie [Split $ nom de nom.] {Si {[lsearch -exact $ regroupements $ partie]! = -1} {punow "privoung $ canal: ...."; "; break}} code>
Si j'ai bien compris, vous voulez savoir si un élément de la liste Test CodePAD p> p> Groupes code> correspond aux exemples de noms DIR. Si tel est le cas, vous devez utiliser une boucle avec
String Match code>
:
Si vous pouvez organiser votre liste de choses dans un cas dans un cas (par exemple, minuscule), vous pouvez utiliser [string tolower] code> et le
dans code> opérateur faire la recherche. Ceci est plus simple que
lSearch code> car il produit un résultat binaire propre:
Votre question est un peu floue, mais assemblant des indices, vous voudrez peut-être: qui sortira p> ou, Beaucoup plus terres est: p>
Quelle est la valeur de
$ arg code>?