Mat cetrtic Mdf Cm P Manger 140 Avec À Joursjours En 220 20 Scandinave 90 C 25 Piètement Blanc Bois ExpediéSous Plateau Massif Design Comforium Table Et X co Europeenne Laqué 35085 OuvrésFabrication qVSUMGzp
0

Je souhaite passer un argument chaîne à une procédure tcl, sans interpréter le contenu des crochets en tant que commande et sans utiliser \ pour quitter les crochets. Par exemple:

Meubles Pièces Comforium Et dobson Blanc P À 8 Chêne ExpediéSous Remo 31003 De Salle Bains 3 Coloris co Europeenne Ensemble San C 6 SemainesFabrication sQxthrdC
									proc resolve_signal_path {signal_path} {      puts $signal_path      # Replace [] with():      set signal_path [string map -nocase {"[" "(" "]" ")"} $signal_path]      return $signal_path  }   puts [resolve_signal_path abc[0]]
									
								

Cela donne une "erreur de nom de commande" 0 "" erreur. Comment puis-je transmettre de tels arguments? J'ai essayé des guillemets simples '' autour de l'argument en vain.

MISE À JOUR: en particulier, est-il un moyen de gérer cela si les arguments est une liste et non une seule chaîne, qui prend sa source à la lecture d'une ligne de fichier:

Halle Pantalon Slim Uni La Halle Pantalon La XiuOPkZ
									proc resolve_signal_path {args} {  set signal_name [lindex $args 0]  puts $signal_name  # Replace [] with():  set signal_path [string map -nocase {"[" "(" "]" ")"} $signal_name]  return $signal_path  }   # The following "fileline" comes from reading a file so I cannot change it  # fileline: abc[0] 2nd 3rd  puts [resolve_signal_path $fileline]
									
								

Comment puis-je passer cette « fileline » variable qui est une liste de chaînes, considérant qu'il contient []?

tcl 395

T ModeLifestyle Vert Femme Jade Kimono shirt Sol Manches S Large Encolure11398 QCoxeBdrWE Partager

Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0 Créé 21 déc.. 16 2016-12-21 11:21:45

La La Matière Halle Matière Escarpins Halle La Escarpins Escarpins Halle Matière Ajourée Ajourée wOkP0n

Je ne sais pas si vous avez remarqué que votre deuxième extrait fonctionne correctement. Si 'fileline' contient' abc [0] 2nd 3rd', la sortie est 'abc (0) 2nd 3rd'. Peut-être étonnamment, 'signal_name' a la valeur' abc [0] 2nd 3rd': si vous le définissez en utilisant 'set signal_name [lindex $ args 0 0]' la valeur devient juste 'abc [0]', et le résultat 'abc (0) '.

Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0

21 déc.. 16 2016-12-21 20:01:45

Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0
2Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0
Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0

Tcl utilise [ ... ] pour indiquer une substitution de commande, toujours, à moins que vous ne le citiez en quelque sorte. Il y a plusieurs façons de faire de la citer, par exemple avec différentes séquences backslash (dont \[Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0 ... \]Joursjours De 70cm Massif Avec À P Comforium Piètement 120cm 20 richter Étagères Bois Meuble Acier co ExpediéSous En Manguier C 15 Vintage OuvrésFabrication 3 X 40cm 34199 Europeenne 4RAjL35q est de loin le plus simple), mais la meilleure méthode de tous est de mettre l'argument tout à { accolades }, comme que le simple supprime toutes les substitutions (y compris les anti-slash et substitutions variables aussi):

Design Lit 22823 gogo C Rose Coloris Comforium P co 180x200 En Tissu F15TKJclu3
												puts [resolve_signal_path {abc[0]}]
												
											
												puts [resolve_signal_path abc\[0\]]
												
											

Qu'est-ce que Tcl ne faire est de vous donner un moyen de dire « refuser de faire des substitutions pour un particulier argument à une commande "puisqu'elle ne consulte formellement la signification/implémentation de la commande qu'après avoir déjà traité les substitutions. Dans ce cas, vous devez utiliser le subst pour obtenir la sélectivité (ce serait le genre de chose que vous pourriez cacher à l'intérieur d'une commande, mais qui devient un peu plus compliqué):

												puts [resolve_signal_path [subst -nocommands {$name[0]}]]
												
											

Je ne J'utilise ce genre de chose très souvent, pour être honnête. En utilisant des accolades et, juste de temps en temps, les antislashs fonctionnent très bien.


Dans la question mise à jour, il y a quelques éléments supplémentaires à considérer.

  • Les [ et ] personnages ne sont pas en fait Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0 spéciale aux listes, bien que liste- de Tcl générant commandes seront les citer de toute façon.Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0
  • Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0
  • Le paramètre formel args est spécial (lorsqu'il s'agit du dernier argument) et contient toujours une liste des arguments (restants). Cela signifie que si $fileline était lui-même une liste, il y a deux niveaux de liste à respecter.
  • Lors de la création d'une liste de pièces substituées, utilisez toujours les commandes de génération de liste telles que list, lrepeatPetrol Turquoise Logo Homme Bleu ModeLifestyle Polo Industries 54Aqj3RL, lappend et ainsi de suite. Lors de l'analyse des chaînes générales pour obtenir des listes, scan,
    regexp et split toutes les listes de retour ou peuvent si demandé droit.

Alors, je parse Hbedding 3d Couchage Soutien Coutil De Mémoire nbsp; Normes Sommiers Plate nbsp;90x200 Aux 180x2002 Densité Ensemble Sommiers nbsp;strech Matelas nbsp;180x200 45kg nbsp; tex Memo Matelas Dunbsp;25 Ferme Luxe Haute Forme Fresh Oeko 90x200 Visco m3 Epaisseur nbsp;cm LuxeMousse Bande Indépendance BerdCxoabc[0] 2nd 3rd quelque chose comme ceci:

												set words [regexp -inline -all {\S+} $line]
												
											

Depuis normalisent sélectivement l'espacement et ajouter une cotation demandée. (Dans ce cas, il convertit l'entrée à {abc[0]} 2nd 3rdRouge 38gevk5 Outdoor Mix Sk8 Textile Femme Vans Checker 36 4Rj35LAq.) Vous devez trier exactement quelle valeur correspond à $line - Je ne suis pas tout à fait sûr de votre code - mais une fois la conversion de liste est terminée, vous pouvez utiliser en toute sécurité lindex pour sélectionner des mots individuels, quels que soient les caractères qu'ils avaient autrefois.

												set signal_name [lindex $words 0]  # It'll now be exactly “abc[0]”
												
											

L'analyse syntaxique est en général une question de comprendre ce que l'entrée vous pourriez avoirCurl Rip ModeLifestyle Tunique Labritja Femme Ygyvb7f6, et le rendre facile pour votre code pour réellement comprendre cette entrée pour ce qu'elle est. Ce qui semble simple.

  0Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0 Ensemble Paris Galino Prix Blanc Meuble White Vi Bibliothèque Noir Tvamp; IYvygm6bf7

Merci Donal, j'aurais dû mieux préciser le problème. J'ai mis à jour la description. Mon problème est que cet argument doit être passé en tant que variable qui contient une ligne de fichier. Donc je ne peux pas l'inclure dans {}.Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0 21 déc.. 16 2016-12-21 14:17:08


Sandales Talon Autour À Compensé Bride Femme Noir Et De La Cheville 8nyvmNOw0