Lua-获取字符串中最后一个字符出现的索引

时间:2019-01-01 22:33:26

标签: string lua substring

我有一些表示表“路径”的字符串,可用于迭代表中的值,例如:

"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,但我不确定如何实现。预先谢谢你!

1 个答案:

答案 0 :(得分:1)

如果.[仅在所使用的字符串的索引语法中出现,则可以执行path:match('(.+)[.[]')[.[]在视觉上令人困惑,但是它是一个包含.[的集合。您可以使用百分比([)转义[.%[],但这不是必需的。

如果表索引之一是包含.[的字符串,例如table['sub.table'][3],则此解决方案将失败。在这种情况下,解决方案将更加复杂。您可以使用LPeg,或在进行字符串匹配之前用其他一些字符序列替换字符串中的.[,然后在字符串匹配后恢复.[