将字符串转换为嵌套的tcl列表

时间:2016-02-12 15:03:08

标签: string list tcl

请参阅以下代码:

> foreach a {k l { jo k } {jo i } k } { puts $a}
k
l
jo k
jo i
k

问题是,如果我得到一个具有列表字符串表示的字符串会发生什么:

> foreach a "{k l { jo k } {jo i } k }" { puts $a}
k l { jo k } {jo i } k

如何将字符串"{k l { jo k } {jo i } k }"转换为与{k l { jo k } {jo i } k }相同的列表。使用subst和eval,但这不起作用。
谢谢。

2 个答案:

答案 0 :(得分:3)

"splat" operator也有效:

% foreach a "{k l { jo k } {jo i } k }" { puts $a}
k l { jo k } {jo i } k 
% foreach a {*}"{k l { jo k } {jo i } k }" { puts $a}
k
l
 jo k 
jo i 
k

答案 1 :(得分:2)

该字符串看起来像是一个列表,所以让我们试试lindex ...

% foreach a [lindex "{k l { jo k } {jo i } k }" 0] { puts $a}
k
l
 jo k 
jo i 
k