使用 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 ""
是否可以将字符串的项目转换为每个项目的单独列表? 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 ""