这个代码示例应该做什么?
set l { A B C D }
lreplace $l 1 2 [ ]
它返回{A {[} ] D}
,但是我想要{A [ ] D}
。
我做错了什么?
您的代码完全按照您的意愿执行,您只是在读取输出的字符串代表,并误解了它:
% 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时,你会看到它脱离了[和]。正如您从foreach输出中看到的,实际值就是您所要求的。如果您想要的只是一个包含有问题字符的字符串,则可以使用join
来获取您感兴趣的字符串。