文字列にエスケープ文字を自動的に追加する Tcl 関数はありますか?
たとえば、正規表現があります
"[xy]"
関数を呼び出した後、取得します
"\[xy]"
もう一度呼ばれた後、私は得る
"\\\[xy]"
スクリプト言語でそのような機能があったと記憶していますが、どの言語だったか思い出せません。
「必要」なエスケープ文字を追加する通常の方法は、次を使用することですlist
(%
は私の Tcl プロンプトです)。
% set s {[xy]}
[xy]
% set s [list $s]
{[xy]}
% set s [list $s]
{{[xy]}}
コマンドは、可能であればそのlist
ままにしておくことを好み、それを回避できる場合は中括弧で囲み、それ以外の場合はバックスラッシュを使用します (バックスラッシュは実際には判読できないため)。
バックスラッシュが本当に必要な場合、string map
またはregsub
必要なことを行う場合。例えば:
set s [regsub -all {\W} $s {\\&}]