tcltk例項詳解 列表操作(二)

2021-06-16 01:13:33 字數 2520 閱讀 2449

列表操作在指令碼中使用的頻率非常高,基本上每個指令碼都會涉及到其中的一些操作,在這裡對列表的命令進行例項解析,以加深對列表命令的理解,本文涉及的命令為llength、lindex、lrange、lsearch和lassign。

llengthlist

返回乙個列表的元素個數,非常簡單而又常用的命令。

% llength 5

lindexlist ?index...?

根據索引值,找出列表中索引為index的元素,如果沒有index就返回整個列表,如果有多個index就返回列表的子列表的元素,具體示例如下:

返回整個列表:

% lindex

this is a tcltk example

返回列表中索引為3的元素:

% lindex 3

tcltk

返回列表中索引為2的元素

% lindex a } 2

tcltk example

返回列表中索引為2的子列表中索引為1的元素

% lindex a } 2 1

example

lrangelist first last

返回列表乙個區間的元素,這個區間由first和last指定。

% lrange 1 3

is a tcltk

lsearch?

options?

list pattern

在列表中尋找元素,這裡的標誌位比較多,下面一一介紹,多個標誌位可以互相混用。

以下是匹配風格標誌位:

尋找的列表元素嚴格匹配pattern,也就是說pattern就是列表中的乙個元素才能找到,返回元素的索引:

% lsearch -exact is

1    以glob風格匹配pattern,沒有匹配風格標誌位的話預設就是glob,搜尋以is結尾的字元:

% lsearch -glob *is

0    以正規表示式風格匹配,搜尋以is結尾的字元:

% lsearch -regexp .*is

0    以下是一些修飾標誌位:

返回所有符合匹配風格的元素索引:

% lsearch -all *is

0 1    返回符合匹配風格的元素值而不是索引:

% lsearch -inline -all *is

this is

返回不符合匹配風格的元素索引:

% lsearch -not -all *is

2 3 4

從指定的索引開始搜尋,下面的例子只返回了索引1,沒有返回索引0:

% lsearch -start 1 -all *is

1    內容描述標誌位:

所匹配的內容為ascii碼,使用-ascii標誌位,預設就是。

可以和-sorted一起使用-dictionary來標誌以字典順序匹配。

使用-integer說明列表元素被當作整數匹配。

-real說明列表元素被當作浮點數匹配。

-nocase忽略大小寫:

% lsearch -nocase this

0    還有兩個排序標誌位,需要和sorted一起使用,-decreasing和-increasing分別代表降序和公升序。

兩個嵌入式標誌位:

-index,匹配子列表中的索引,下面的例子匹配子列表中的第二個元素,有這個標誌位要求list中每個元素都必須有子列表,並且有需要檢查的index:

% lsearch -index 1 -all } *a*

1 2    -subindices,需要和-index一起使用,返回匹配的全路徑:

% lsearch -index 1 -all -subindices } *a*

lassignlist varname ?

varname ...?

將列表元素賦值給變數,直接採用help裡面的例子,非常明確了:

lassign x y z       ;# 返回空

puts $x                     ;# prints "a"

puts $y                     ;# prints "b"

puts $z                     ;# prints "c"

lassign x y z         ;# 返回空

puts $x                     ;# prints "d"

puts $y                     ;# prints "e"

puts $z                     ;# prints ""

lassign x y       ;# 返回"h i"

puts $x                     ;# prints "f"

puts $y                     ;# prints "g"

tcl tk例項詳解 string(二)

這裡對string命令中的幾個子命令使用例項進行一些解釋,以便於更加容易理解string命令中的各個子命令,本文僅對以下幾個string命令進行例項解析。分別是repeat replace reverse tolower totitle toupper trim trimleft trimright...

tcl tk例項詳解 eval

eval命令本身使用非常簡單,但是用處非常大,如果需要動態的構造命令,那麼必須使用eval命令。eval命令參考 命令格式 evalarg arg 如果是乙個引數,那麼相當於把這個引數當作命令來執行,如果有多個引數,eval命令會把多個引數以concat命令風格連線起來然後再執行命令。舉乙個最簡單的...

tcl tk例項詳解 string(三)

這裡對string命令中的幾個子命令使用例項進行一些解釋,以便於更加容易理解string命令中的各個子命令,本文僅對三個比較複雜的命令進行例項解析。分別是is class map和match三個子命令。string isclass strict?failindexvarname?string 如果s...