我有tcl字符串列表
set NameList [list 'foo' 'moo 1' 'too 1 3' 'Enterprise 1']
and i try to check if "foo" is in the list but i get false
set test "foo"
if {[lsearch -exact $NameList $test] >= 0} {
return 1
}
更新
我用单引号更改了Double引号但是我用" foo"
设置了变量测试
但它仍然无法正常工作
答案 0 :(得分:4)
当我尝试使用您的代码时,它对我来说非常正常:
% set NameList [list "foo" "moo 1" "too 1 3" "Enterprise 1"]
foo {moo 1} {too 1 3} {Enterprise 1}
% if {"foo" in $NameList} { puts "got it!" }
got it!
% lsearch -exact $NameList "foo"
0
% lsearch -exact $NameList "not there at all"
-1
使用{
... }
代替"
... "
自动引用字符串不是您需要担心的任何内容。它不会影响列表中的值;它们将是您指定的字符串。
哦,对于简单的字面值限制测试,请在上面使用它时考虑in
运算符。它更清楚,并说出你的意思更多。可在任何当前支持的Tcl版本中使用(即,在8.5中引入)。