Tcl中向列表添加含特殊字符的字符串结果不符合预期如何解决
问题原因
- 你的赋值和
lappend操作本身没有逻辑错误,你看到的带反斜杠的输出是Tcl列表的序列化展示规则导致的,并不是元素的实际存储值。 - Tcl为了保证列表结构可以被正确解析,输出列表整体时,会自动对包含空格、特殊符号的元素做转义处理:要么给空格、特殊字符加反斜杠前缀,要么用花括号把整个元素包裹起来,两种展示形式是完全等价的,你期望的
{var mylinechart ={}`就是花括号包裹形式的展示结果。
验证方案
你可以单独取出列表中的对应元素打印,就能看到实际值完全符合你的预期:
# 取出列表第一个元素打印 puts [lindex $mylist 0] # 输出结果:var mylinechart = `{
如果你需要让整个列表输出时采用花括号包裹元素的形式,直接用字符串格式化拼接即可,不需要调整原有列表的存储逻辑,列表元素的实际值本身已经满足你的需求。
内容的提问来源于stack exchange,提问作者Mkn
相关产品推荐
相关产品推荐

