TCL语法学习

1 list

        list由一堆元素组成的有序集合,可以嵌套定义。list每个元素可以是任意字符串,也可以是list。

set a {1 2 3}
set b {4 5 6}

list $a $b  
输出 {1 2 3} {4 5 6}

2 concat

        将多个list合成一个list,每个list变成新list的一个元素。

set a {1 2 3}
set b {4 5 6}

concat $a $b
输出 1 2 3 4 5 6

3 lindex

        语法:lindex list index

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

lindex {1 2 3 {d b} 7} 3
输出 d b

4 llength

        语法:llength list

        返回list的元素个数。

llength {1 2 3 4 5 6}
输出 6

llength {1 2 3 4 5 {s d} 6}
输出 7 

5 linsert

        语法:linsert list index value ?value....?     (??之间的表示optional)

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

linsert {1 3 2 {s g} 5} 3 7 8 {7 10}
输出1 3 2 7 8 {7 10} {s g} 5

6 lreplace

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

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

lreplace {1 3 2 {s g} 5} 3 3
输出 1 3 2 5

lreplace {1 3 2 {s g} 5} 3 3 a
输出1 3 2 a 5

7 lrange

        语法:lrange list first last

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

lrange {1 3 4 2 5 8} 3 end
输出 2 5 8

8 lappend

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

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

lappend a 1 2 3
输出 1 2 3
同时得到新变量a
set a
输出 1 2 3


lappend a 4 5 6
输出1 2 3 4 5 6

9 lsearch

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

        返回list中第一个匹配模式pattern的元素的索引(第几个元素),如果找不到就返回-1。-exact、-glob、-regexp是三种模式匹配的技术。-exact表示精确匹配;-glob的匹配方式和string match命令的匹配方式相同;-regexp表示正则表达式匹配。默认状态时使用-glob匹配。

set a {how are you}
lsearch $a y*
输出 2
lsearch $a y?
输出 -1

10 lsort

        语法:lsort ?options? list

        返回把list按照要求排序后的串。options可以是以下值:

                -ascii  按ASCII字符的顺序排序比较,这也是默认option;

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

                        (1)不考虑大小写;(2)如果元素中有数字的话,数字被当作整数来排序;

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

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

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

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

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

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

11 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

12 join

        语法:join list ?joinString?

        join命令是split命令的逆。join将list的所有元素合并到一个字符串中,中间以joinString分开。默认的joinString是空格。

% join {1 1 { } 2 3 { } 3} {}
11 23 3

% join {how are you} .
how.are.you

13 switch

         tcl中的switch也可以用if命令实现,但是书写起来较为繁琐。

        语法:switch ?options? string {pattern body ?pattern body...?}

       第一个是可选参数options,表示进行匹配的方式。tcl支持三种匹配方式:-exect方式,表示精确匹配;-glob方式(默认),-glob方式的匹配方式和string match命令的匹配方式相同;-regexp方式,指正则表达式匹配方式。第二个参数string是要被用来作测试的值。第三个参数是括起来的一个或多个元素对。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值