我试图用tcl表格格式打印数据。假设我有三个数组:-
GOLD, TEST, DIFF和它有一些价值。我想以下列格式印刷:-
黄金 Hi/T1559.1-1996财政、商业、金融、商业、金融、金融、商业、商业、金融、商业、金融、商业、商业、金融、金融、商业、金融、金融、商业、商业、金融等领域的商业、金融、商业、商业、金融、商业、金融、商业、商业、金融、金融等领域的商业、 /T1559.2-1996商业技术产品的商业、商业、金融、金融、商业、金融等行业的产品、技术、技术、金融等领域的产品、技术、金融等领域的产品、技术、技术、金融等 /T1589.3-1996/1998/1998/1998/1998 *
你们想提点建议吗?
发布于 2011-07-13 14:18:16
下面的代码可以用一个foreach循环来实现您想要的结果。没有必要创建临时列表-假设您有数组的公共索引(您没有指定)。
array set GOLD {a 1 b 2 c 3 d 4}
array set TEST {d TCL c Guys b Stack a Hello}
array set DIFF {a Hi c for b Format d print}
foreach idx [lsort [array names GOLD]] {
puts "$GOLD($idx)\t$TEST($idx)\t$DIFF($idx)"
}如果您没有数组的公共索引(我怀疑打印表的效用),您可以这样做(尽管相对排序没有定义):
foreach {gidx gval} [array get GOLD] {tidx tval} [array get TEST] {didx dval} [array get DIFF] {
puts "$gval\t$tval\t$dval"
}发布于 2011-07-13 15:24:47
我将使用格式化命令和前程来完成您所要求的任务。我假设您实际上有3个列表,而不是3个数组,因为它会显示出黄金、test、diff的值在某种程度上是相互关联的。
set goldList {1 2 3 4}
set testList {Hello Stack Guys TCL}
set diffList {Hi Format for print}
set formatStr {%15s%15s%15s}
puts [format $formatStr "GOLD" "TEST" "DIFF"]
puts [format $formatStr "----" "----" "----"]
foreach goldValue $goldList testValue $testList diffValue $diffList {
puts [format $formatStr $goldValue $testValue $diffValue]
}
# output
GOLD TEST DIFF
---- ---- ----
1 Hello Hi
2 Stack Format
3 Guys for
4 TCL print发布于 2011-07-13 09:23:36
首先,将数组转换为列表:
set GOLDList ""
set keyList [array names GOLD]
foreach key $keyList {
lappend GOLDList $GOLD($key)
}然后,您可以使用foreach片段:
set GOLDList "1 2 3 4"; #1st list
set TESTList "Hello Stack Guys TCL"; #2nd list
set DIFFList "Hi Format for print"; #3rd list
foreach c1 $GOLDList c2 $TESTList c3 $DIFFList {
puts $c1\t$c2\t$c3
}这就是输出(您需要额外打印标题)
1 Hello Hi
2 Stack Format
3 Guys for
4 TCL printhttps://stackoverflow.com/questions/6676568
复制相似问题