TCL LREPLACE ne peut pas remplacer les accolades?
-
29-10-2019 - |
Question
Que devrait faire cet exemple de code?
set l { A B C D }
lreplace $l 1 2 \[ \]
Il revient {A {[} \] D}
, cependant je veux avoir {A [ ] D}
.
Qu'est-ce que je fais mal?
La solution
Votre code fait exactement ce que vous voulez, vous lisez simplement le représentant de la chaîne de votre sortie et le mal compréhension:
% 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
Lorsque vous lisez le représentant de la chaîne, vous le voyez échapper au [et]. Comme vous pouvez le voir sur 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, c'est juste une chaîne avec les caractères en question.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow