在tcl中的字符串末尾转义“\”

时间:2017-06-15 13:26:34

标签: tcl

我想创建一个以"\"结尾的字符串。例如:

set str {",$"23"^#@$\'"\}

这不起作用,因为tcl认为我在这里逃离了"}"。 所以我试图逃避"\"

set str {",$"23"^#@$\'"\\}

但是现在str的值是",$"23"^#@$\'"\\。 我希望str的值最后只有一个"\"",$"23"^#@$\'"\

如何在{}

中创建字符串时这样做

3 个答案:

答案 0 :(得分:1)

我能想到的最简单的方法是使用 format

puts [format {",$"23"^#@$\'"%s} \\]
",$"23"^#@$\'"\

我想您甚至可以尝试使用%c \ 的ascii代码。

答案 1 :(得分:0)

这可能会让你烦恼,但我知道如何在TCL中绕过这种愚蠢的唯一方法是:

set str {",$"23"^#@$\'"}
set str "$str\\"

你会认为这个bug至少在'''中是一致的,但不是,它对双引号的效果如预期的那样。尝试用花括号做"\\" ......

答案 2 :(得分:0)

你不能;这是少数无法以这种方式引用的案例之一。以下是交互式会话的证明:

list

其他类似的情况就像是有不平衡的大括号等等。他们真的不经常出现。上面由{{1}}生成的反斜杠形式是替代方案(如果您愿意,可以将其放在双引号中)。