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?

Foi útil?

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
scroll top