在tcl中第4次出现逗号时拆分一个字符串

时间:2014-11-06 07:09:00

标签: tcl

我有一个清单

     set list "abc,def,ghi,jkl,mno,pqr,stu,vwx"       

现在我想在逗号的第4个出现时拆分此列表。 我希望将列表分为两个列表:

 A = abc,def,ghi,jkl
 B = mno,pqr,stu,vwx

3 个答案:

答案 0 :(得分:4)

如何简单地使用列表运算符split和重新join

puts [set A [join [lrange [split $list ,] 0 3] ,]]
puts [set B [join [lrange [split $list ,] 4 end] ,]]

或者,如果您想要进入正则表达式路线,请在一个操作中执行:

regexp -- {((?:\w+,){3}\w+),(.*)} $list --> A B
puts $A
puts $B

答案 1 :(得分:0)

set list "abc,def,ghi,jkl,mno,pqr,stu,vwx"    

regexp -- {(\w+,){3}\w+} $list A
regsub -- "${A}," $list {} B

puts $A
puts $B

答案 2 :(得分:0)

一个相当复杂的例子:)

set occurence 4
set slice_position 0
set list "abc,def,ghi,jkl,mno,pqr,stu,vwx"

for {set i  0} {$i < $occurence} {incr i} {
    set slice_position [string first "," $list [expr $slice_position + 1]]
    if {$slice_position == -1} {
        break
    }
}

puts [string range $list 0 $slice_position-1]
puts [string range $list $slice_position+1 end]