当前位置: 首页 > 工具软件 > Jim Tcl > 使用案例 >

Tcl列表命令

沈飞舟
2023-12-01

1.基本列表结构

lindex 命令从一个列表中取得元素

lindex至少要获取两个参数,即一个列表和一个索引值

lindex {John Anne Mary Jim} 1
=> Anne

length 命令返回列表中的元素个数

llength {John Anne Mary Jim} 
=> 4

lrange命令返回列表中的元素范围

lrange [get_ports left_in*] 0 249

2.创建列表

list 每个参数作为列表的一个独立元素

list {a b c} {d e} f {g h i}
=> {a b c} {d e} f {g h i}
set a [list {a b c} {d e} f {g h i}]
llength $a
=> 4

concat 将多个列表合并成一个列表

concat list1 list2 … 将list1 list2 …等等list中的元素展开后连称新的list (展开一层{})
这个命令把每个参量用空格连接在一起,参量开头和结尾的空白符被去掉,如果参量是列表,效果就是把所有的参量连接成一个单独的列表,可以有任意个参量,如果不提供参量,结果返回一个空字符串

concat a b {c d e} {f {g h}}
=> a b c d e f {g h}
加双引号可以不取消一层列表的
concat " a b {c    d   e} f"
=> a b {c    d   e} f

lrepeat 命令重复一个元素集合来创建列表

lrepeat 3 {a b}
=> {a b} {a b} {a b}

lsearch在列表寻找特定元素

返回索引
lsearch {a b c d e} c
> 2
lsearch -all {a b c d e c} c
> 2 5
lsearch -not -all {a b c d e c} c
> 0 1 3 4
过滤列表
lsearch -inline {a20 b35 c47} b*
> b35
lsearch -inline -not {a20 b35 c47} b*
> a20
lsearch -inline -not -all {a20 b35 c47} b*
> a20 c47
切除操作:
lsearch -all -inline -not -exact {a b c a d e a f g a} a
> b c d e f g
半途开始:
lsearch -start 3 {a b c a b c} c
> 5

3.字符串和列表之间的转化

split 命令将字符串分成几个部分

split的第一个参数是待分割的字符串,第二个参数是一个或多个分割字符

语法:
split string ? splitChars
set y /u/home/tcl/list.tcl
split $y /
=> {} u home tcl list.tcl

join 命令将列表元素接成一个字符串

join 的动作和split相反,可以将list中所有元素以指定的字符连接成新的字串

语法:
join list ? joinString ?
set x {5 12 7}
expr [join $x +]
=> expr 5+12+7
 类似资料: