使用tcl / tk将字符串分成不同的列表

时间:2017-04-19 13:27:38

标签: regex list split 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}

之类的输出

2 个答案:

答案 0 :(得分:1)

我们可以使用正则表达式来解析字符串,并使用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 {{\1}}]

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

答案 1 :(得分:0)

从字符串中获取列表。我们正在使用空白" "作为列表元素的分隔符

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

印刷

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