【发布时间】:2015-03-01 13:07:07
【问题描述】:
我正在努力解决这个问题:
给定 2 个字符串:
s1 = '/foo/:bar/oof/:rab'
s2 = '/foo/lua/oof/rocks'
我想提供以下信息:
如果它们匹配(上面这两个应该匹配,s2 遵循 s1 中描述的模式)。
一个表,其中包含
s2的值以及s1中的相应名称。在这种情况下,我们将拥有:{ bar = "lua", rab = "rocks" }
我认为这个算法可以解决它,但我不知道如何实现它(可能使用 gmatch):
-
将占位符
:索引存储为表的 KEYS,并且相应的 VALUES 是这些占位符的名称。以
s1为例:local aux1 = { "6" = "bar", "15" = "rab" } -
以
aux1的键为索引,提取s2的值 进入另一个表:local aux2 = {"6" = "lua", "15" = "rocks"} -
最后将它们两个合并到一个表中(这个很简单:P)
{ bar = "lua", rab = "rocks" }
【问题讨论】:
-
在第 2 步中,您使用 s1 中的索引来查找 s2 中的点,这仅适用于 ":bar" 与 "lua" 的长度相同,会一直如此吗?跨度>
-
实际上这个逻辑有一个缺陷,我正在研究基于在“/”上拆分字符串的解决方案
标签: lua lua-patterns