如何从一个列表中提取匹配后的元素?

问题描述 投票:1回答:1

我有一个变量和一个列表,如下所示。

set check a7
set element_list "a1 a2 a3 a4 a5 a6 a7 a8 a9 a10"

我想要一个列表,其中有a7之后的所有元素。

a8 a9 a10

我该怎么做?element_list "是排序的。

谢谢,我有一个变量和一个列表,如下图所示。

tcl
1个回答
2
投票

你没有指定如果 "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 "在第一个元素之前,这也能正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.