在Tcl中为puts和join嵌套字符串
我希望生成如下所示的输出:在Tcl中为puts和join嵌套字符串,tcl,Tcl,我希望生成如下所示的输出: foo: 1 2 3 我天真的尝试类似于放置“foo:\n[join{1 2 3}{\n}]”,但这当然不起作用,因为{\n}不是不可替换的,而是产生以下结果: foo: 1\n 2\n 3 我似乎找不到正确的转义序列将字符串嵌套在字符串中,以便join看到空格并将\n转义到新行。有什么方法可以满足我的要求吗?使用双引号代替大括号: % puts [join {foo: 1 2 3} "\n "] foo: 1 2
foo:
1
2
3
我天真的尝试类似于放置“foo:\n[join{1 2 3}{\n}]”
,但这当然不起作用,因为{\n}
不是不可替换的,而是产生以下结果:
foo:
1\n 2\n 3
我似乎找不到正确的转义序列将字符串嵌套在字符串中,以便join看到空格并将
\n
转义到新行。有什么方法可以满足我的要求吗?使用双引号代替大括号:
% puts [join {foo: 1 2 3} "\n "]
foo:
1
2
3
或者,不要尝试构建单个字符串,而是使用循环:
puts "foo:"
foreach i {1 2 3} {
puts " $i"
}
puts "foo:"
foreach ii {1 2 3} { puts " $ii" }
使用双引号而不是大括号:
% puts [join {foo: 1 2 3} "\n "]
foo:
1
2
3
或者,不要尝试构建单个字符串,而是使用循环:
puts "foo:"
foreach i {1 2 3} {
puts " $i"
}
puts "foo:"
foreach ii {1 2 3} { puts " $ii" }
经过更多的实验,我发现:
puts "foo:\n [join {1 2 3} \n\x20\x20]"
set delimiter "\n "
puts "foo:${delimiter}[join {1 2 3} $delimiter]"
puts "foo:"
foreach i {1 2 3} {
puts " $i"
}
puts "foo:"
foreach ii {1 2 3} { puts " $ii" }
。。。或者在该主题上的任意多个语句变体。另一个例子:
puts -nonewline "foo:\n "
puts [join {1 2 3} "\n "]
出于各种原因,多语句版本对我不起作用,但我可以使用第一个选项。在进行了更多实验后,我发现:
puts "foo:\n [join {1 2 3} \n\x20\x20]"
set delimiter "\n "
puts "foo:${delimiter}[join {1 2 3} $delimiter]"
puts "foo:"
foreach i {1 2 3} {
puts " $i"
}
puts "foo:"
foreach ii {1 2 3} { puts " $ii" }
。。。或者在该主题上的任意多个语句变体。另一个例子:
puts -nonewline "foo:\n "
puts [join {1 2 3} "\n "]