首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以表格格式打印tcl?

如何以表格格式打印tcl?
EN

Stack Overflow用户
提问于 2011-07-13 09:05:30
回答 4查看 23K关注 0票数 9

我试图用tcl表格格式打印数据。假设我有三个数组:-

GOLD, TEST, DIFF和它有一些价值。我想以下列格式印刷:-

黄金 Hi/T1559.1-1996财政、商业、金融、商业、金融、金融、商业、商业、金融、商业、金融、商业、商业、金融、金融、商业、金融、金融、商业、商业、金融等领域的商业、金融、商业、商业、金融、商业、金融、商业、商业、金融、金融等领域的商业、  /T1559.2-1996商业技术产品的商业、商业、金融、金融、商业、金融等行业的产品、技术、技术、金融等领域的产品、技术、金融等领域的产品、技术、技术、金融等  /T1589.3-1996/1998/1998/1998/1998 *

你们想提点建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-13 14:18:16

下面的代码可以用一个foreach循环来实现您想要的结果。没有必要创建临时列表-假设您有数组的公共索引(您没有指定)。

代码语言:javascript
复制
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)"
}

如果您没有数组的公共索引(我怀疑打印表的效用),您可以这样做(尽管相对排序没有定义):

代码语言:javascript
复制
foreach {gidx gval} [array get GOLD] {tidx tval} [array get TEST] {didx dval} [array get DIFF] {
  puts "$gval\t$tval\t$dval"
}
票数 3
EN

Stack Overflow用户

发布于 2011-07-13 15:24:47

我将使用格式化命令和前程来完成您所要求的任务。我假设您实际上有3个列表,而不是3个数组,因为它会显示出黄金、test、diff的值在某种程度上是相互关联的。

代码语言:javascript
复制
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
票数 17
EN

Stack Overflow用户

发布于 2011-07-13 09:23:36

首先,将数组转换为列表:

代码语言:javascript
复制
set GOLDList ""
set keyList [array names GOLD]
foreach key $keyList {
    lappend GOLDList $GOLD($key)
}

然后,您可以使用foreach片段:

代码语言:javascript
复制
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
}

这就是输出(您需要额外打印标题)

代码语言:javascript
复制
1   Hello   Hi
2   Stack   Format
3   Guys    for
4   TCL     print
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6676568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档