TCL如何遍历和打印具有字符串和列表的变量的所有值

TCL how to traverse and print all values for a variable having string and list

我有一个第 3 方 API,输出如下:

puts [GetDesc $desc " "] #prints below data
#A_Name 9023212134(M) emp#121 M { 41 423 }

如何访问打印值的所有令牌和列表 { 41 423 }?

输出是包含 5 个项目的列表,其中最后一个是包含两个元素的列表。您使用 lindex:

提取列表中的元素
set var {A_Name 9023212134(M) emp#121 M { 41 423 }}; # A_Name 9023212134(M) emp#121 M { 41 423 }
lindex $var 0; # A_Name
lindex $var 4; # 41 423 (Note: leading and trailing spaces are preserved)
lindex $var 4 0; # 41
lindex $var 4 1; # 432

您可以使用 foreach:

迭代结果中的值
foreach value [GetDesc $desc " "] {
    puts ">>> $value <<<"
}

这将打印如下内容(注意最后一项的额外空格;它们是值的一部分):

>>> A_Name <<<
>>> 9023212134(M) <<<
>>> emp#121 <<<
>>> M <<<
>>>  41 423  <<<

另一种方法是使用 lassign 将这些值放入变量中:

lassign [GetDesc $desc " "] name code1 code2 code3 pair_of_values

然后您就可以单独使用 $pair_of_values 了。