您好我想在列表中搜索一个变量并显示列表中的下一项。就像如果我有一个带有“aaa bbb ccc eee fff”的列表,我想搜索bbb并显示列表中的下一个,在这种情况下是ccc。我知道我们必须使用 lsearch 并找到变量并使用 lindex 来显示下一个,但我不知道如何移动到下一个变量。
问问题
447 次
2 回答
3
这就是你所追求的吗?
set l {aaa bbb ccc eee fff}
set index [lsearch $l bbb]
incr index
set required [lindex $l $index]
它放入ccc
变量required
中。
于 2013-07-08T22:45:49.507 回答
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
于 2013-07-08T23:58:00.263 回答