如何搜索变量并在tcl的列表中显示下一个变量

时间:2013-07-08 22:43:12

标签: tcl

您好我想在列表中搜索变量并显示列表中的下一个项目。喜欢 如果我有“aaa bbb ccc eee fff”的列表,我想搜索 bbb 并显示列表中的下一个 ccc 即可。我知道我们必须使用lsearch并找到变量并使用lindex来显示下一个但我不知道如何移动到下一个变量。

2 个答案:

答案 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