当我在字符串中检测到“ - ”时,我正在写一个代码来做某事。当我这样做时:
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" ;}
答案 0 :(得分:3)
这是一个已知问题,并解决了引入特殊选项--
的问题。它意味着开关的结束,意味着在--
之后将没有其他开关,将下一个标记视为数据......
因此,只要您使用
,您的代码就可以运行switch -- [string index $code $j] {
"-" {set mem($ptr) [expr $mem($ptr) - 1]}
}