2016-03-05 137 views
0

我怀疑有一个单一的班轮将一个数组转换成一个看起来像x = 1; y = 2; z = 3的字符串。我怎样才能做到这一点?我目前正在使用打印数组key =值冒号分隔

set vals [join [array names a] \;] 

得到x; y; z但想要那里的值。如果碰巧没有值,我想跳过=号,例如x = 1; y; z = 3。也许数组得到?

这得到所有的信息在里面,但结果看起来像X 1; Y 2,Z 3,Q; 3

set vals [join [array get a] \;] 

一些如何,我想有一个切片我们可以采取这里

更新。是的,我知道你可以做一个foreach,但我想知道是否有一行。例如,这似乎工作

foreach { k v } [array get a] { 
    if {$v ne ""} { 
    lappend valList $k=$v 
    } else { 
    lappend valList $k 
    } 
} 
set vals [join $valList \;] 

回答

0
join [lmap {k v} [array get a] {if {$v ne {}} {join [list $k $v] =} {set k}}] \; 

如果您的Tcl没有lmap,有一个方便的replacement