TCL命令

目录

list命令

concat命令

lindex命令

llength命令

linsert命令

lreplace命令

lrange命令

lappend命令

lsearch命令

lsort命令

split命令

join命令


list命令

list 这个概念在 TCL 中是用来表示集合的。TCL 中 list 是由一堆元素组成的有序集合,list 可以嵌套定义,list 每个元素可以是任意字符串,也可以是 list。下面都是 TCL 中的合法的 list:

{}         //空 list

{a b c d}

{a {b c} d}         //list 可以嵌套

list 是 TCL 中比较重要的一种数据结构,对于编写复杂的脚本有很大的帮助,TCL 提供了很多 基本命令对 list 进行操作。

语法: list ? value value...?

这个命令生成一个 list,list 的元素就是所有的 value。例:

list 1 2 {3 4}

输出:1 2 {3 4}

concat命令

语法:concat list ?list...?

这个命令把多个 list 合成一个 list每个 list 变成新 list 的一个元素

set a [list 1 2 {3 4}]

输出:1 2 {3 4}

set b [list a b {c d}]

输出:a b {c d}

set tet [concat $a $b]

输出:1 2 {3 4} a b {c d}

lindex $tet 3        //返回角标为3的元素

输出:a

llength $tet        //返回元素个数

输出:6

lindex命令

语法:lindex list index

返回 list 的第 index 个(0-based)元素。例:

lindex {1 2 {3 4}} 2 3 4

输出:3 4

llength命令

语法:llength list

返回 list 的元素个数。例

llength {1 2 {3 4}}

输出:3

linsert命令

语法:linsert list index value ?value...?

返回一个新串,新串是把所有的 value 参数值插入 list 的第 index 个(0-based)元素之前得到。 例:

linsert {1 2 {3 4}} 1 7 8 {9 10}

输出:1 7 8 {9 10} 2 {3 4}

lreplace命令

语法:lreplace list first last ?value value ...?

返回一个新串,新串是把 list 的第 firs (0-based)t 到第 last 个(0-based)元素用所有的 value 参数替换得到的。如果没有 value 参数,就表示删除第 first 到第 last 个元素。例:

lreplace {1 7 8 {9 10} 2 {3 4}} 3 3

输出:1 7 8 2 {3 4}

lreplace {1 7 8 2 {3 4}} 4 4 4 5 6

输出:1 7 8 2 4 5 6

lrange命令

语法:lrange list first last

返回 list 的第 first (0-based)到第 last (0-based)元素组成的串,如果 last 的值是 end。就是 从第 first 个直到串的最后。

lrange {1 7 8 2 4 5 6} 3 end

输出:2 4 5 6

lappend命令

语法:lappend varname value ?value...?

把每个 value 的值作为一个元素附加到变量 varname 后面,并返回变量的新值,如果 varname 不存在,就生成这个变量。例:

lappend a 1 2 3

输出:1 2 3

set a

输出:1 2 3

lsearch命令

语法:lsearch ?-exact? ?-glob? ?-regexp? list pattern

返回 list 中第一个匹配模式 pattern 的元素的索引,如果找不到匹配就返回-1。-exact、-glob、 -regexp 是三种模式匹配的技术。-exact 表示精确匹配;-glob 的匹配方式和 string match 命令的匹配方式相同,将在后面第八节介绍 string 命令时介绍;-regexp 表示正规表达式匹配, 将在第八节介绍 regexp 命令时介绍。缺省时使用-glob 匹配。例:

set a { how are you }

输出:how are you

lsearch $a y* 2 % lsearch $a y?

输出:-1

lsort命令

语法:lsort ?options? list

这个命令返回把 list 排序后的串。options 可以是如下值:

-ascii 按 ASCII 字符的顺序排序比较.这是缺省情况。

-dictionary 按字典排序,与-ascii 不同的地方是:

(1)不考虑大小写

(2)如果元素中有数字的话,数字被当作整数来排序.

因此:bigBoy 排在 bigbang 和 bigboy 之间, x10y 排在 x9y 和 x11y 之间.

-integer 把 list 的元素转换成整数,按整数排序.

-real 把 list 的元素转换成浮点数,按浮点数排序.

-increasing 升序(按 ASCII 字符比较)

-decreasing 降序(按 ASCII 字符比较)

-command command TCL 自动利用 command 命令把每两个元素一一比较,然后给出排序 结果。

split命令

语法:split string ?splitChars?

把字符串 string 按分隔符 splitChars 分成一个个单词,返回由这些单词组成的串。如果 splitChars 是一个空字符{},string 被按字符分开。如果 splitChars 没有给出,以空格为分隔符。例:

split "how.are.you" .

输出:how are you

split "how are you"

输出:how are you

split "how are you" {}

输出:h o w { } a r e { } y o u

join命令

语法:join list ?joinString?

join 命令是命令的逆。这个命令把 list 的所有元素合并到一个字符串中,中间以 joinString 分 开。缺省的 joinString 是空格。例:

join {h o w { } a r e { } y o u} {}

输出:how are you

join {how are you} .

输出:how.are.you

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值