TCL - 将任意数量的空格分隔为一个列表

时间:2011-04-20 10:08:19

标签: list split whitespace tcl

说我有这样的字符串:

set str "AAA    B C     DFG 142               56"

现在我想得到如下列表:

{AAA B C DFG 142 56}

为此,我想使用split函数,但在这种情况下,我得到一些额外的空列表{}。我怎么能得到上面的清单?

5 个答案:

答案 0 :(得分:13)

set text "Some arbitrary text which might include \$ or {"
set wordList [regexp -inline -all -- {\S+} $text]

请参阅:Splitting a String Into Words

答案 1 :(得分:6)

您可以随时执行以下操作:

set str "AAA    B C     DFG 142               56"
set newStr [join $str " "]

它将输出以下内容:

{AAA B C DFG 142 56}

答案 2 :(得分:4)

来自textutil::splittcllib模块有一个splitx触发器,可以完全按照您的需要进行操作

package require textutil::split
set result [textutil::split::splitx $str]

答案 3 :(得分:1)

从Tcl 8.5起,以下内容也有效:

list {*}$str

(前提是字符串也是正确的列表,如问题所示)。输出是所需的列表。

文档: list{*} (syntax)

答案 4 :(得分:0)

我知道这很旧,但是如果将来有人遇到这种情况,我将添加我的解决方案。我将未知数量的空格替换为一个空格字符,以使拆分正常工作,类似于Scott的答案:

set str "AAA    B C     DFG 142               56"    
regsub -all { +} $str " " str ; # str is now "AAA B C DFG 142 56"
set splitout [split $str { +}] ; # Split on one or more spaces.