Domanda

Che cosa dovrebbe fare questo esempio di codice?

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

Restituisce {A {[} \] D}, tuttavia desidero avere {A [ ] D}.

Cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Il tuo codice fa esattamente quello che vuoi, stai solo leggendo la rappresentazione della stringa del tuo output e fraintendendola:

% 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

Quando leggi la ripetizione della stringa, vedi che sfugge a [e].Come puoi vedere dall'output di foreach, i valori effettivi sono ciò che stai chiedendo.Puoi utilizzare join per ottenere la stringa che ti interessa se quello che vuoi è solo una stringa con i caratteri in questione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top