如何在tcl中将\n设置为str

如何在tcl中将\n设置为str,tcl,regsub,Tcl,Regsub,您好,我是tcl新手,希望将“\n”分配给变量,并在regsub中使用该变量替换该字符串。 应该是这样的: set a "\n\[\"this is my code\"\]" puts $a 我期待这会给你带来什么 \n\[\“这是我的代码\”\],然后我可以在regsub{$a}$str中使用这个$a“替换”sub\u str。 这个regsub可以在$str中搜索$a,并用replace替换匹配的一个,然后在sub_str中对其进行strore。 但

您好,我是tcl新手,希望将“\n”分配给变量,并在regsub中使用该变量替换该字符串。 应该是这样的:

set a "\n\[\"this is my code\"\]"
puts $a
我期待这会给你带来什么
\n\[\“这是我的代码\”\]
,然后我可以在
regsub{$a}$str中使用这个$a“替换”sub\u str
。 这个regsub可以在$str中搜索$a,并用replace替换匹配的一个,然后在sub_str中对其进行strore。 但是,它给了我
[这是我的代码]
是否有一种方法可以将第一种格式设置为
\n\[\“这是我的代码\”\]
,以便我可以使用它来执行字符串regsub


谢谢

使用大括号而不是引号来防止计算反斜杠转义:

set a {\n\[\"this is my code\"\]}
puts $a
印刷品

\n\[\“这是我的代码\”\]

使用大括号而不是引号来防止计算反斜杠转义:

set a {\n\[\"this is my code\"\]}
puts $a
印刷品

\n\[\“这是我的代码\”\]

嗨,肖恩,谢谢你的回复。这对我有用。但是,如果我想这样做:设置$b=“这是我的代码”并将$b放入集合a中。什么样的方法也可以将b的内容评估为“这是我的代码”?@Shang如果我理解正确,类似于
set b{“这是我的代码”};设置[format{\n\[%s\]}$b]
可能是最干净的方法。是的,这就是我的意思。谢谢,非常感谢!嗨,肖恩,谢谢你的回复。这对我有用。但是,如果我想这样做:设置$b=“这是我的代码”并将$b放入集合a中。什么样的方法也可以将b的内容评估为“这是我的代码”?@Shang如果我理解正确,类似于
set b{“这是我的代码”};设置[format{\n\[%s\]}$b]
可能是最干净的方法。是的,这就是我的意思。谢谢,非常感谢!反斜杠反斜杠始终是一个选项。如果你不做变量或命令替换,考虑把东西放在括号里(因为里面没有替换,这就是Tcl中括号的真正含义)。反斜杠是一种选择。如果你不做变量或命令替换,考虑把东西放在括号里(因为里面没有替换,这就是Tcl中括号的真正含义)。