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

Ash*_*win 1 string split tcl

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

set buffer "abc def geh ijk lmn abc 123 rfs sdf abc asdfg sadfga"
Run Code Online (Sandbox Code Playgroud)

现在我想基于字符串说"abc"分割缓冲区所以我的输出应该如下所示:

{ { def geh ijk lmn } { 123 rfs sdf } { asdfg sadfga}}
Run Code Online (Sandbox Code Playgroud)

我试过用,

set output [split $buffer "abc"]
Run Code Online (Sandbox Code Playgroud)

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

Don*_*ows 5

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

package require textutil::split

textutil::split::splitx $buffer "abc"
Run Code Online (Sandbox Code Playgroud)

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

textutil::split::splitx $buffer ***=$splitString
Run Code Online (Sandbox Code Playgroud)

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