我有一个清单
set list "abc,def,ghi,jkl,mno,pqr,stu,vwx"
现在我想在逗号的第4个出现时拆分此列表。 我希望将列表分为两个列表:
A = abc,def,ghi,jkl
B = mno,pqr,stu,vwx
答案 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]