我想创建一个以"\"
结尾的字符串。例如:
set str {",$"23"^#@$\'"\}
这不起作用,因为tcl认为我在这里逃离了"}"
。
所以我试图逃避"\"
set str {",$"23"^#@$\'"\\}
但是现在str的值是",$"23"^#@$\'"\\
。
我希望str的值最后只有一个"\"
:",$"23"^#@$\'"\
如何在{}
答案 0 :(得分:1)
我能想到的最简单的方法是使用 format :
puts [format {",$"23"^#@$\'"%s} \\]
",$"23"^#@$\'"\
我想您甚至可以尝试使用%c 和 \ 的ascii代码。
答案 1 :(得分:0)
这可能会让你烦恼,但我知道如何在TCL中绕过这种愚蠢的唯一方法是:
set str {",$"23"^#@$\'"}
set str "$str\\"
你会认为这个bug至少在'''中是一致的,但不是,它对双引号的效果如预期的那样。尝试用花括号做"\\"
......
答案 2 :(得分:0)
你不能;这是少数无法以这种方式引用的案例之一。以下是交互式会话的证明:
list
其他类似的情况就像是有不平衡的大括号等等。他们真的不经常出现。上面由{{1}}生成的反斜杠形式是替代方案(如果您愿意,可以将其放在双引号中)。