Pregunta

¿Qué debe hacer este código de muestra?

set l { A B C D }
lreplace $l 1 2 \[ \]

Devuelve {A {[} \] D}, sin embargo, quiero tener {A [ ] D}.

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Su código hace exactamente lo que usted quiere, solo está leyendo el representante de cadena de su salida y lo malinterpreta:

% 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

Cuando lee el representante de cadena, lo ve escapar de [y].Como puede ver en la salida de foreach, los valores reales son los que está pidiendo.Puede usar join para obtener la cadena que le interesa si lo que desea es solo una cadena con los caracteres en cuestión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top