Syntax Tcl lreplace can';你不能换牙套吗?

Syntax Tcl lreplace can';你不能换牙套吗?,syntax,tcl,substitution,braces,Syntax,Tcl,Substitution,Braces,这个代码示例应该做什么 set l { A B C D } lreplace $l 1 2 \[ \] 它返回{A{[}\]D},但是我想要{A[]D} 我做错了什么?您的代码完全符合您的要求,您只是在读取输出的字符串rep并误解它: % 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

这个代码示例应该做什么

set l { A B C D }
lreplace $l 1 2 \[ \]
它返回
{A{[}\]D}
,但是我想要
{A[]D}


我做错了什么?

您的代码完全符合您的要求,您只是在读取输出的字符串rep并误解它:

% 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

当您读取字符串rep时,您看到它转义了[and]。正如您从foreach输出中看到的,实际值就是您所要求的。如果您想要的只是一个包含相关字符的字符串,则可以使用
join
获取您感兴趣的字符串。

您的代码完全按照您的要求执行,您只是在读取输出的字符串代表并误解它:

% 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
当您读取字符串rep时,您看到它转义了[and]。正如您从foreach输出中看到的,实际值就是您所要求的。如果您想要的只是一个包含相关字符的字符串,则可以使用
join
获取您感兴趣的字符串