2016-03-05 81 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