我有一个字符串:
set a "alfa beta gama} {alfa} {gama"
我试着这样做:
set b [split $a "} {"]
我希望结果是列表b:
element 1 = alfa beta gama
element 2 = alfa
element 3 = gama
但是当我尝试这个时,我没有得到理想的结果,因为tcl正在分裂“”
答案 0 :(得分:5)
split
命令将 set 字符作为可选的第二个参数(为方便起见,表示为字符串)。你真正想要进行分裂的选择是:
使用Tcllib的textutil::split
包。
package require textutil::split
set pieces [textutil::split::splitx $yourString "***=\} \{"]
将字符序列转换为罕见字符并拆分:
set pieces [split [string map [list "\} \{" "\uffff"] $yourString] "\uffff"]
答案 1 :(得分:1)
如果这是您的确切情况,为什么不通过附加这样的起始和结束括号来使其成为完整的列表
set a "alfa beta gama} {alfa} {gama"
set b "\{$a\}"
然后您可以使用lindex
答案 2 :(得分:0)
因为你做了
" set b "\{$a\}
"
变量b的值是 " {alfa beta gama} {alfa} {gama}"
现在
lindex $b 0
= {alfa beta gama}
lindex $b 1
= {alfa}
lindex $b 2
= {gama}