-tcl中lsearch中的结束索引

-tcl中lsearch中的结束索引,tcl,Tcl,lsearch命令作为选项之一 -start索引从位置索引开始搜索列表。如果索引具有值end,则它引用列表中的最后一个元素,并且 end integer是指列表中的最后一个元素减去指定的 整数偏移量 我想将-end与-start一起使用。怎样才能做到呢? 可以通过丢弃lsearch返回列表中大于或等于-end索引的索引来完成。但是有没有更好的方法呢?在您的情况下,我会尝试使用lrange生成正在搜索的列表的副本,而不返回您不希望返回的元素 lsearch [lrange $theList $st

lsearch
命令作为选项之一

-start索引从位置索引开始搜索列表。如果索引具有值end,则它引用列表中的最后一个元素,并且 end integer是指列表中的最后一个元素减去指定的 整数偏移量

我想将
-end
-start
一起使用。怎样才能做到呢?
可以通过丢弃
lsearch
返回列表中大于或等于
-end
索引的索引来完成。但是有没有更好的方法呢?

在您的情况下,我会尝试使用
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"
}