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
了。
我有一个第 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
了。