【问题标题】:Lua: How do I access a string value as an array (or table)?Lua:如何将字符串值作为数组(或表)访问?
【发布时间】:2017-05-15 20:29:49
【问题描述】:

我想知道如何在 Lua 中将字符串值用作数组。我确实知道如何在 C# 等语言中使用它,但我不知道如何在 Lua 中使用它。

【问题讨论】:

  • 您的目标是访问字符串的单个字符还是字符范围?
  • 向我们展示您尝试在 lua 中完成的等效 C# 代码。
  • 要获取位置 i 的单个字符(从 1 开始),请使用 str:sub(i,i)。没有相反的操作(修改字符串中的单个字符),因为 Lua 字符串是不可变的。

标签: arrays string lua


【解决方案1】:

string.sub(yourString,i,j) 或仅sub(yourString,i,j) 其中i = j 仅获取字符串中的一个字符。请记住,Lua 是 1 索引的,而不是像 C# 那样的 0 索引。查看Lua string documentation了解更多详情。

【讨论】:

    【解决方案2】:

    您可以获取 String 元表并更改元方法 __index 以返回给定位置上的字符...下面的代码正是这样做的。

    getmetatable('').__index = function(str,i) return string.sub(str,i,i) end
    --example
    string = "dog"
    print(string[3])
    -- Output: g
    

    【讨论】:

    • 我尝试使用 __newindex 使其读/写,但结果函数中的第一个参数是一个字符串,因此是通过复制传递的...如果它通过引用传递有可能改变它。
    猜你喜欢
    • 2011-05-02
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    相关资源
    最近更新 更多