Que devrait faire cet exemple de code?Tcl lreplace ne peut pas remplacer les accolades?
set l { A B C D }
lreplace $l 1 2 \[ \]
Il retourne {A {[} \] D}
, mais je veux avoir {A [ ] D}
.
Qu'est-ce que je fais mal?
Que devrait faire cet exemple de code?Tcl lreplace ne peut pas remplacer les accolades?
set l { A B C D }
lreplace $l 1 2 \[ \]
Il retourne {A {[} \] D}
, mais je veux avoir {A [ ] D}
.
Qu'est-ce que je fais mal?
Votre code fait exactement ce que vous voulez, vous lisez juste le représentant de la chaîne de votre sortie et tout malentendu, il:
% set l { A B C D }
A B C D
% foreach elem $l { puts $elem }
A
B
C
D
% set j [lreplace $l 1 2 \[ \]]
A {[} \] D
% foreach elem $j { puts $elem }
A
[
]
D
% join $j
A [ ] D
Quand vous lisez le représentant de la chaîne, vous le voir échapper à la [ et ]. Comme vous pouvez le voir à partir de la sortie foreach, les valeurs réelles sont ce que vous demandez. Vous pouvez utiliser join
pour obtenir la chaîne qui vous intéresse si ce que vous voulez est juste une chaîne avec les caractères en question.