tcl/tkリファレンス-文字列subst


名前subst-反斜線、コマンド、変数の置換を完了
構文
subst ?
-nobackslashes? ?
-nocommands? ?
-novariables?
string
このコマンドペアについて説明します.
string変数は変数、コマンド、およびスラッシュ置換を実行し、置換後の結果を返します.置換の方法はTclコマンドを実行する方法と同じです.
string変数は2回置き換えられ,1回はTclコマンドのプロファイラー,もう1回はsubstコマンドである.
-nobackslashes、-nocommands、または-novariablesフラグビットが指定されている場合、対応する置換は実行されません.たとえば、-nocommandsフラグビットが指定されている場合、コマンド置換は発生せず、カッコは通常の文字として処理されます.
1つの置換には、-novariablesフラグビットを指定すると、コマンド置換が実行されます.これは、コマンドを完了するために必要な変数置換が依然として発生することを意味します.同様に、-nocommandsコマンドを指定しても、変数置換を完了するために必要なコマンド置換が発生します.
置換中にエラーが発生した場合、substコマンドはエラーを返します.コマンド置換または変数置換時にbreak異常が発生した場合、置換の結果、異常が発生する前に正常に置換された文字列が置換され、コマンド置換または変数置換時にcontinue異常が発生した場合、このコマンド置換は空の文字列を返し、その後置換された文字列とともに返されます.コマンドの置換または変数の置換時にreturn例外が返される場合、このコマンドの置換はreturnが返すコードを返し、その前と後に置換された文字列とともに返されます.
例の次の置換では、substはコマンド置換でない限り、二重引用符と花括りを特別に処理しません.
set a 44
subst {xyz {$a}}
はxyz{$a}ではなくxyz{44}を返します.スクリプト:
set a "p/} q /{r"
subst {xyz {$a}}
は、xyz{p/}q/{r}ではなくxyz{p}q{r}を返します.
コマンドの置換が実行されると、その変数の置換はすべて実行されます.
set a 44
subst -novariables {$a [format $a]}
は、$a$aではなく$a 44を返します.同様に、変数置換の実行時に含まれる任意のコマンド置換が実行されます.
proc b {} {return c}
array set a {c c [b] tricky}
subst -nocommands {[b] $a([b])}
[b]trickyではなく[b]cを返す
continueとbreak異常は、残りの置換を防止するためにコマンドの置換を許可します.
subst {abc,[break],def}
はabcではなくabcを返し、def、スクリプト:
subst {abc,[continue;expr {1+2}],def}
はabc,,defを返し、abc,3,defではなく
他の例外が返すコードは、戻り値の代わりになります.
subst {abc,[return foo;expr {1+2}],def}
abc,foo,defはabc,3,defではなくabc,foo,defを返す
subst {abc,[return -code 10 foo;expr {1+2}],def}
もabc,foo,defをabc,3,defではなくabc,foo,defを返す