Tcl lreplace无法取代牙箍?

时间:2012-02-22 13:36:55

标签: syntax tcl substitution braces

该代码示例应该做什么?

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

返回{A {[} \] D},但我希望{A [ ] D}

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您的代码完全符合您的要求,您只需阅读输出的字符串代码并误解它:

% 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

当你读取字符串代表时,你会看到它逃脱[和]。从foreach输出中可以看出,实际值是您所要求的。如果您想要的只是一个包含相关字符的字符串,您可以使用join来获取您感兴趣的字符串。