如何通过一对紧密和开放的花括号分开

时间:2013-06-07 12:49:51

标签: string tcl

我有一个字符串:

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

我试着这样做:

set b [split $a "} {"]

我希望结果是列表b:

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

但是当我尝试这个时,我没有得到理想的结果,因为tcl正在分裂“”

3 个答案:

答案 0 :(得分:5)

split命令将 set 字符作为可选的第二个参数(为方便起见,表示为字符串)。你真正想要进行分裂的选择是:

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

    package require textutil::split
    
    set pieces [textutil::split::splitx $yourString "***=\} \{"]
    
  2. 将字符序列转换为罕见字符并拆分:

    set pieces [split [string map [list "\} \{" "\uffff"] $yourString] "\uffff"]
    

答案 1 :(得分:1)

如果这是您的确切情况,为什么不通过附加这样的起始和结束括号来使其成为完整的列表

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

然后您可以使用lindex

参考这3项中的任何一项

答案 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}