Tclsh:我可以对字符串使用split吗?

时间:2013-11-29 06:10:35

标签: string split tcl

在Tcl中,我想基于字符串拆分缓冲区。

即,

set buffer "abc def geh ijk lmn abc 123 rfs sdf abc asdfg sadfga"

现在我想根据字符串说“abc”拆分缓冲区 所以我的输出应该如下:

{ { def geh ijk lmn } { 123 rfs sdf } { asdfg sadfga}}

我尝试过使用,

set output [split $buffer "abc"]

但是这会分别根据所有a,b,c字符拆分字符串。

2 个答案:

答案 0 :(得分:5)

split命令将其第二个参数视为要拆分的一组字符。要获得您真正想要的内容,您需要来自Tcllib中textutil::split包的splitx

package require textutil::split

textutil::split::splitx $buffer "abc"

如果您不知道您的真正拆分字符串中是否包含RE元字符(即几乎所有非字母数字字符),请使用“this is a real a literal”魔术前缀:

textutil::split::splitx $buffer ***=$splitString

(在上面两种情况下,使用您的特定缓冲区字符串,您最终还会得到一个空的第一项,表示拆分项位于缓冲区的前面。)

答案 1 :(得分:0)

set buffer "abc def geh ijk lmn abc 123 rfs sdf abc asdfg sadfga"
regsub "abc" $buffer "\n" string
split $string "\n"