2

您好我想在列表中搜索一个变量并显示列表中的下一项。就像如果我有一个带有“aaa bbb ccc eee fff”的列表,我想搜索bbb并显示列表中的下一个,在这种情况下是ccc。我知道我们必须使用 lsearch 并找到变量并使用 lindex 来显示下一个,但我不知道如何移动到下一个变量。

4

2 回答 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 回答