O Tcl lreplace não pode substituir os colchetes?
-
29-10-2019 - |
Pergunta
O que deve fazer este exemplo de código?
set l { A B C D }
lreplace $l 1 2 \[ \]
Ele retorna {A {[} \] D}
, no entanto, quero ter {A [ ] D}
.
O que estou fazendo de errado?
Solução
Seu código faz exatamente o que você deseja, você está apenas lendo a string rep de sua saída e a interpretando mal:
% 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
Ao ler a string rep, você a vê escapar de [e].Como você pode ver na saída foreach, os valores reais são o que você está pedindo.Você pode usar join
para obter a string em que está interessado se o que deseja é apenas uma string com os caracteres em questão.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow