假设我有一个像这样的字符串:
set str "AAA B C DFG 142 56"
现在我想得到一个列表如下:
{AAA B C DFG 142 56}
为此,我想使用 split 函数,但在这种情况下我会得到一些额外的空列表 {}。我怎样才能得到上面的列表?
set text "Some arbitrary text which might include \$ or {"
set wordList [regexp -inline -all -- {\S+} $text]
请参阅:将字符串拆分为单词。
您始终可以执行以下操作:
set str "AAA B C DFG 142 56"
set newStr [join $str " "]
它将输出以下内容:
{AAA B C DFG 142 56}
来自 tcllib 的 textutil::split 模块有一个
splitx
过程,它完全可以满足您的需求
package require textutil::split
set result [textutil::split::splitx $str]
我知道这已经很旧了,但如果其他人将来遇到这个问题,我会添加我的解决方案。我将未知数量的空格替换为一个空格字符,以允许拆分正常工作,类似于斯科特的答案:
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.
设置地图[list {*}$str]
这将返回原始 str 作为子字符串列表,忽略空格。 您可以获取列表中的第一项,然后使用
首先设置[lindex $map 0]