该lsearch
命令具有-start index
作为选项之一
-start index从位置index开始搜索列表。如果index的值为end,它指的是列表中的最后一个元素,而 end - integer指的是列表中的最后一个元素减去指定的整数偏移量。
我想-end
和-start
. 如何做呢?可以通过丢弃返回列表中大于或等于-end
index的索引来完成。lsearch
但是有没有更好的方法?
该lsearch
命令具有-start index
作为选项之一
-start index从位置index开始搜索列表。如果index的值为end,它指的是列表中的最后一个元素,而 end - integer指的是列表中的最后一个元素减去指定的整数偏移量。
我想-end
和-start
. 如何做呢?可以通过丢弃返回列表中大于或等于-end
index的索引来完成。lsearch
但是有没有更好的方法?
在您的情况下,我很想用它lrange
来生成正在搜索的列表的副本,而没有您不想返回的元素。
lsearch [lrange $theList $start $end] $searchTerm
该-start
选项的真正目的是允许跳过以前找到的匹配项,现在我们有了该-all
选项(它lsearch
返回一个可以匹配搜索词的所有位置的列表),它的用处不大。它有点像这样使用:
for {set idx -1} {[set idx [lsearch -start [incr idx] $list $term]] >= 0} {} {
# Process the match index...
puts "found $term at $idx"
}
现在你会写:
foreach idx [lsearch -all $list $term] {
puts "found $term at $idx"
}