我有一些表示表“路径”的字符串,可用于迭代表中的值,例如:
"table.subTable[2].anotherTable"
"table.subTable.otherTable.anotherTable"
"table.subTable.otherTable[3]"
[2]和[3]是可能指向另一个表的索引。我需要编写一个函数来切断最后一个键/索引,以使“字符串路径”指向上一个(或“父”)表。
例如,以上字符串应变成:
"table.subTable[2]"
"table.subTable.otherTable"
"table.subTable.otherTable"
我认为可以通过在字符串中找到最后的[
或.
个字符并使用string.sub
对其进行拆分来实现。
也许有许多其他方法可以实现这一目标,例如gmatch
,但我不确定如何实现。预先谢谢你!
答案 0 :(得分:1)
如果.
和[
仅在所使用的字符串的索引语法中出现,则可以执行path:match('(.+)[.[]')
。 [.[]
在视觉上令人困惑,但是它是一个包含.
和[
的集合。您可以使用百分比([
)转义[.%[]
,但这不是必需的。
如果表索引之一是包含.
或[
的字符串,例如table['sub.table'][3]
,则此解决方案将失败。在这种情况下,解决方案将更加复杂。您可以使用LPeg,或在进行字符串匹配之前用其他一些字符序列替换字符串中的.
或[
,然后在字符串匹配后恢复.
或[