我有一个像这样的字符串:
set a "alfa beta gama} {alfa} {gama"
我试着做:
set b [split $a "} {"]
我希望结果是一个列表 b :
element 1 = alfa beta gama
element 2 = alfa
element 3 = gama
但是当我尝试这个时,我没有得到想要的结果,因为 tcl 正在尝试用 " "
该split
命令将一组字符作为其可选的第二个参数(为方便起见,它表示为字符串)。进行您所追求的那种拆分的选项实际上是:
使用textutil::split
来自 Tcllib 的包。
package require textutil::split
set pieces [textutil::split::splitx $yourString "***=\} \{"]
将字符序列转换为稀有字符并对其进行拆分:
set pieces [split [string map [list "\} \{" "\uffff"] $yourString] "\uffff"]
如果那是您的确切情况,为什么不通过像这样附加开始和结束大括号来制作完整列表
set a "alfa beta gama} {alfa} {gama"
set b "\{$a\}"
那么你可以参考这三个项目中的任何一个lindex
既然你做了
" set b "\{$a\}
"
变量 b 的值为“{alfa beta gama} {alfa} {gama}”
现在
lindex $b 0
= {alfa beta gama}
lindex $b 1
= {alfa}
lindex $b 2
= {gama}