【问题标题】:separating a string into different lists using tcl/tk使用 tcl/tk 将字符串分成不同的列表
【发布时间】:2017-04-19 13:27:38
【问题描述】:

是否可以将字符串的项目转换为每个项目的单独列表? set a [list "1.2 1.3 1.6 1.7 1.8"] 并有像 {1.2}{1.3}{1.6}{1.7}{1.8} 这样的输出

【问题讨论】:

  • 它不工作。我尝试了相同的命令。 @WiktorStribiżew
  • 注意,你想要的格式不是列表,不能用Tcl list 命令处理。
  • @PeterLewerin 我只想将每个值存储在不同的列表中。目前,它们作为字符串存储在单个列表中。
  • 大括号不是列表构造函数。 {1.2} 不比 1.2 多或少。 {1.1}{1.2} 只是一个字符串(或具有一个元素的列表)。

标签: regex list split tcl tk


【解决方案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}}]

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

【讨论】:

    【解决方案2】:

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

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

    打印

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      相关资源
      最近更新 更多