拆分字符串重复Tcl

时间:2018-11-10 14:32:27

标签: string tcl

我是Tcl的新手,面对一个了解整个概念的问题:

<name of variable> set [split "[string repeat "-,-," [columns]]-",]

columns是值为6的变量; 拆分将如何,整个字符串是哪一个?

谢谢大家

1 个答案:

答案 0 :(得分:1)

<name of variable> set [split "[string repeat "-,-," [columns]]-",]

您必须从内到外解压缩Tcl命令,因为最里面的嵌套方括号会首先执行。

  • columns是一个 proc ,希望返回一个整数。
  • 然后string repeat重复“-,-”多次。
  • 然后用双引号引起来的字符串在末尾添加-
  • 然后split 在逗号上拆分“-,-,-,...-”字符串,从而得到*“ 2 *列+ 1”连字符的列表*。

  • split命令中最后一个逗号之前缺少空格
  • set命令看起来像:set varname value(除非您要处理对象)
set <name of variable> [split "[string repeat "-,-," [columns]]-" ,]
# ...............................................................^

演示:

set columns 6
proc columns {} {return $::columns}
set result [split "[string repeat "-,-," [columns]]-" ,]
puts $result
puts [llength $result] ;# should be 13
- - - - - - - - - - - - -
13

您可以通过以下方式获得相同的结果:

set result [lrepeat [expr {2 * [columns] + 1}] "-"]

Tcl实际上是一种非常简单的语言。整个语法只有12条规则:https://www.tcl.tk/man/tcl8.6/TclCmd/Tcl.htm