使用 tcl/tk 将字符串分隔到不同的列表中

separating a string into different lists using tcl/tk

是否可以将字符串的项目转换为每个项目的单独列表? set a [list "1.2 1.3 1.6 1.7 1.8"] 并得到类似 {1.2}{1.3}{1.6}{1.7}{1.8}

的输出

我们可以使用正则表达式来解析字符串,然后join用结果做一些事情:

set a "1.2 1.3 1.6 1.7 1.8"

set b [regexp -all -inline {\S+} $a]
set c "{[join $b "}{"]}"

现在,如果我们知道我们有一个合适的列表,我们就可以跳过正则表达式的东西,但不这样做是最安全的。


在这种情况下,我们也可以使用 regsub 进行转换。

set c [regsub -all {\s*(\S+)\s*} $a {{}}]

但是,一旦所需的转换变得更加复杂,编写这种转换就会变得更加困难。

从字符串中获取列表。我们使用空格“”作为列表元素的分隔符

set a [split "1.2 1.3 1.6 1.7 1.8" " "]

打印

foreach one $a {
    puts -nonewline "{$one}"
}
puts ""