我有一个变量和一个列表,如下所示。
set check a7
set element_list "a1 a2 a3 a4 a5 a6 a7 a8 a9 a10"
我想要一个列表,其中有a7之后的所有元素。
a8 a9 a10
我该怎么做?element_list "是排序的。
谢谢,我有一个变量和一个列表,如下图所示。
你没有指定如果 "check "元素不在列表中会发生什么。因为你表示列表是按顺序排列的,我假设你仍然需要在被搜索元素之后的元素。
set check a7
set element_list "a1 a2 a3 a4 a5 a6 a7 a8 a9 a10"
set last [lsearch -bisect -dictionary -exact $element_list $check]
puts [lreplace $element_list 0 $last]
lsearch 的 bisect 选项将返回元素小于或等于模式的最后一个索引。然后可以使用 lreplace 来删除包括该索引在内的所有元素。即使 "check "在第一个元素之前,这也能正常工作。