在Tcl中忽略“ - ”

时间:2016-07-19 15:48:32

标签: tcl

当我在字符串中检测到“ - ”时,我正在写一个代码来做某事。当我这样做时:

switch [string index $code $j] {
    "-" { set mem($ptr) [expr $mem($ptr) - 1] ; }

但是Tcl将其解释为“ - ”作为switch选项前缀:

bad option "-": must be -exact, -glob, -regexp, -command procname or --

我尝试用另一个字符替换“ - ”:

regsub -all "-" $code "m" code

但它是一样的:

bad switch "-": must be -all, -nocase, -expanded, -line, -linestop, -lineanchor, -start, or --

当我使用\u2d

时,甚至会发生这种情况
regsub -all \u2d $code "m" code
switch $code \u2d {puts "hi" ;}

1 个答案:

答案 0 :(得分:3)

这是一个已知问题,并解决了引入特殊选项--的问题。它意味着开关的结束,意味着在--之后将没有其他开关,将下一个标记视为数据......

因此,只要您使用

,您的代码就可以运行
switch -- [string index $code $j] {
    "-" {set mem($ptr) [expr $mem($ptr) - 1]}
}