0

我有一个像这样的字符串:

set a "alfa beta gama} {alfa} {gama"

我试着做:

set b [split $a "} {"]

我希望结果是一个列表 b :

element 1 = alfa beta gama
element 2 = alfa
element 3 = gama

但是当我尝试这个时,我没有得到想要的结果,因为 tcl 正在尝试用 " "

4

3 回答 3

5

split命令将一字符作为其可选的第二个参数(为方便起见,它表示为字符串)。进行您所追求的那种拆分的选项实际上是:

  1. 使用textutil::split来自 Tcllib 的包。

    package require textutil::split
    
    set pieces [textutil::split::splitx $yourString "***=\} \{"]
    
  2. 将字符序列转换为稀有字符并对其进行拆分:

    set pieces [split [string map [list "\} \{" "\uffff"] $yourString] "\uffff"]
    
于 2013-06-07T12:58:13.453 回答
1

如果那是您的确切情况,为什么不通过像这样附加开始和结束大括号来制作完整列表

set a "alfa beta gama} {alfa} {gama"
set b "\{$a\}"

那么你可以参考这三个项目中的任何一个lindex

于 2013-06-07T13:01:26.587 回答
0

既然你做了

" set b "\{$a\}"

变量 b 的值为“{alfa beta gama} {alfa} {gama}”

现在 lindex $b 0= {alfa beta gama} lindex $b 1= {alfa} lindex $b 2= {gama}

于 2014-11-28T06:09:05.637 回答