當前位置:成語大全網 - 新華字典 - tcl列表操作lsearch

tcl列表操作lsearch

名稱 ?lsearch - 在列表中尋找特定元素

語法 ? lsearch ? options ? list pattern

描述 這個命令尋找 list 中與 pattern 匹配的元素。如果匹配到了返回第壹次找到這個元素的索引(除非指定了-all或-inline),如果沒有匹配到返回-1。可選變元指出了列表的元素怎樣去匹配 pattern ,可選項如下:

匹配風格可選項

默認的匹配風格為 -glob ,如果給出了多個匹配風格,那麽最後給出的匹配風格有效。

-exact

pattern 是字符串並且必須嚴格匹配每壹個 list 元素。

-glob

pattern 是通配風格匹配每壹個列表元素,與 string match 命令類似。

-regexp

pattern 被當作壹個正則表達式來匹配列表中的每壹個元素,與 re_syntax 命令類似。

-sorted

列表元素被排序,如果指定了這個可選項, lsearch 將會使用更加有效的查詢算法去查列表。如果沒有指定其它的可選項, list 將被排列成升序並且包含ASCII碼。這個可選項與 -glob 和 -regexp 互斥,當指定 了-all 或 -not 時與 -exact 非常象。

壹般修飾可選項

這些可選項可以在任何壹種匹配風格中給出。

-all

返回壹個列表,列表的元素為所有匹配到的索引,返回的索引按照數字順序排列,如果同時指定了 -inline 返回數值,數值的順序就是在列表中的順序。

-inline

返回匹配到的第壹個元素。如果 -all 也指定了,則返回壹個列表,列表的元素為所有匹配到的數值。

-not

與匹配相反,返回第壹個不匹配的數值的索引。

-start ? index

從列表的 index 個索引開始搜索。

內容描述可選項

描述如何去解釋在列表中尋找到的元素,只有當 -exact 和 -sorted 指定時才有效。如果給出了多個可選項,那麽最後給出的可選項有效。默認為-ascii。

-ascii

列表元素作為Unicode字符串來檢查。

-dictionary

列表元素在比較時使用字典關系(查看 lsort 以獲取詳細描述),只有當 -sorted 可選項指定時才有有效。

-integer

列表中的元素被當作整數來處理。

-nocase

忽略大小寫。與 -dictionary 、 -integer 和 -real 搭配無效。

-real

列表中的元素被當作浮點數來處理。

列表排序可選項

這個可選項指定了列表如何排序,只有指定了 -sorted 時才有效。如果給出了多個可選項,那麽最後給出的可選項有效。

-decreasing

列表元素為降序排列,只有指定了 -sorted 時才有效。

-increasing

列表元素為升序排列,只有指定了 -sorted 時才有效。

內嵌列表可選項

這些可選項被用來尋找子列表,可以與任何其它可選項壹起使用。

-index ? indexList

這個可選項尋找內嵌的列表, indexList 變元必須給出壹個索引列表(與 lindex 和 lset 類似), indexList 給出的索引列表在 list 中必須存在對應的索引,否則會出錯。

-subindices

這個可選項只返回尋找到的子列表元素,必須和 -index 配合使用。

示例

基本搜索:

lsearch {a b c d e} c

→2

lsearch -all {a b c a b c} c

→2 5

過濾列表:

lsearch -inline {a20 b35 c47} b*

→b35

lsearch -inline -not {a20 b35 c47} b*

→a20

lsearch -all -inline -not {a20 b35 c47} b*

→a20 c47

lsearch -all -not {a20 b35 c47} b*

→0 2

甚至可以做切除操作:

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

搜索子列表中的元素:

lsearch -index 1 -all -inline {{a abc} {b bcd} {c cde}} *bc*

→{a abc} {b bcd}

轉自: /dulixin/article/details/ 2185458