您好我想在列表中搜索变量并显示列表中的下一个项目。喜欢 如果我有“aaa bbb ccc eee fff”的列表,我想搜索 bbb 并显示列表中的下一个 ccc 即可。我知道我们必须使用lsearch并找到变量并使用lindex来显示下一个但我不知道如何移动到下一个变量。
答案 0 :(得分:3)
这就是你要追求的吗?
set l {aaa bbb ccc eee fff}
set index [lsearch $l bbb]
incr index
set required [lindex $l $index]
它将ccc
放入变量required
。
答案 1 :(得分:1)
这是一个考虑边缘情况的解决方案,如果搜索到的元素不满足条件,则返回空字符串:
proc get_item {mylist element option} {
set i [lsearch $mylist $element]
if {$i > -1} {
if {$option == "previous" && $i > 0} {
return [lindex $mylist $i-1]
} elseif {$option == "next" && $i >= 0 && $i < [llength $mylist] - 2} {
return [lindex $mylist $i+1]
}
}
return ""
}
set a {aaa bbb ccc ddd}
get_item $a bbb next
get_item $a bbb previous