【问题标题】:Lua - Get index of last character appearance in a stringLua - 获取字符串中最后一个字符出现的索引
【发布时间】:2019-05-28 16:40:44
【问题描述】:

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

"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,但我不确定如何。提前谢谢!

【问题讨论】:

    标签: string lua substring


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!表索引将不包含.[,这样就可以了。不完全确定为什么[[.] 很好,但切换字符需要%,如[.^[]
    • 哦,对,[ 不必转义(尽管该模式在视觉上令人困惑)。我已经编辑了我的帖子。
    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 2012-03-23
    • 2021-08-22
    • 2014-03-04
    • 2013-05-06
    • 2017-12-28
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多