我在TCL代码中使用一个列表(仅一个元素),当我用puts打印出来时,我看到文本有时用大括号括起来。例如:{abc},有时不是。这会导致问题,因为我正在对此特殊文本执行regsub,并且花括号使我的代码失败。我还观察到,当文本中有特殊符号时,列表用大括号括起来。谁能解释为什么列表用大括号括起来。
当Tcl从单个值创建列表时,它将尝试使用尽可能少的引用。如果它是一个简单的值,例如abc
,它将忽略所有引号字符。如果它是一个带有元语法字符的值,例如(abc def
)中的空格,则将其用大括号({abc def}
)括起来。如果(abc{def
)中的括号不平衡,则使用反斜杠(abc\{def
)。这样可以确保Tcl创建的列表也始终可以理解为包含单个命令的脚本,这些命令的单词恰好是列表的元素。
regexp
在列表上使用它不是一个好主意;格式对于这种工作不是很友好(而且当您考虑可以将所有内容解析为列表时,甚至更糟,这比Tcl实际从list
命令生成的内容要多得多)。提取元素(例如,使用lindex
或foreach
)并将正则表达式应用于该元素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句