【问题标题】:Output list with first match among two list输出两个列表中第一个匹配的列表
【发布时间】:2019-10-04 15:09:38
【问题描述】:

我在 Tcl 中有两个列表:

列表1

{a/1 a/2 b/1 b/2}

列表2

{a b}

我想编写一个代码,它将检查来自list2list1 的元素并给出第一个匹配项并忽略其余匹配项,基本上在输出列表下方:

a/1 b/1

【问题讨论】:

    标签: list tcl matching


    【解决方案1】:

    其中唯一棘手的一点是确切知道如何在列表 1 中搜索列表 2 中的项目。我将假设它们是相当简单的字符串,我们可以对它们进行全局匹配(如如果使用string match)。这是lsearch 默认支持的情况,允许我们使用非常简单的代码:

    proc FirstMatches {haystackList needlesList} {
        lmap needle $needlesList {
            lsearch -inline $haystackList $needle*
        }
    }
    puts [FirstMatches {a/1 a/2 b/1 b/2} {a b}]
    

    lmap 只是针对$needleList 中的每根针运行它的主体(与foreach 一样)并将其结果收集到一个列表中。这里很完美。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多