LUA 使用字符串获取表中的值

如何使用字符串从表中编译值? 比如:

NumberDef = {
[1] = 1,
[2] = 2,
[3] = 3
}

TextDef = {
["a"] = 1,
["b"] = 2,
["c"] = 3
}

如果我要请求 "1ABC3",该如何输出 1 1 2 3 3?

非常感谢任何回复。

点赞
用户8763997
用户8763997

你可以像这样访问 lua 数组中的值:

TableName["IndexNameOrNumber"]

使用你的例子:

NumberDef = {
[1] = 1,
[2] = 2,
[3] = 3
}

TextDef = {
["a"] = 1,
["b"] = 2,
["c"] = 3
}

print(NumberDef[2])--将打印2
print(TextDef["c"])--将打印3

如果你希望访问 Lua 数组的所有值,你可以像这样遍历所有值(类似于 c# 中的 foreach):

for i,v in next, TextDef do
print(i, v)
end
--输出:
--c    3
--a    1
--b    2

所以为了回答你的请求,你可以像这样请求这些值:

print(NumberDef[1], TextDef["a"], TextDef["b"], TextDef["c"], NumberDef[3])--将打印1 1 2 3 3

还有一点,如果你想要拼接 lua 字符串,可以像这样实现:

string1 = string2 .. string3

例子:

local StringValue1 = "I"
local StringValue2 = "Love"

local StringValue3 = StringValue1 .. " " .. StringValue2 .. " Memes!"
print(StringValue3) --将打印"I Love Memes!"

更新 我想了一个快速的例子代码,你可以用它来处理你要查找的东西。这将遍历输入的字符串,并检查每个表格中是否存在你请求的值。如果存在,它将把它添加到一个字符串值中,并在最后打印出最终产品。

local StringInput = "1abc3" --你要查找的内容
local CombineString = "" --用于组合请求的字符串

NumberDef = {
[1] = 1,
[2] = 2,
[3] = 3
}

TextDef = {
["a"] = 1,
["b"] = 2,
["c"] = 3
}

for i=1, #StringInput do --对于输入字符串中的每个字符,执行以下操作
    local CurrentCharacter = StringInput:sub(i,i); --从循环位置获取当前字符
    local Num = tonumber(CurrentCharacter)--如果可能,转换为数字

    if TextDef[CurrentCharacter] then--如果它存在于文本定义数组中,则组合它
        CombineString = CombineString .. TextDef[CurrentCharacter]
    end
    if NumberDef[Num] then --如果它存在于数字定义数组中,则组合它
        CombineString = CombineString .. NumberDef[Num]
    end
end

print("Combined: ", CombineString) --打印最终产品。
2018-02-02 12:03:14
用户107090
用户107090

试试这个:

s="1ABC3z9"

t=s:gsub(".",function (x)
    local y=tonumber(x)
    if y~=nil then
        y=NumberDef[y]
    else
        y=TextDef[x:lower()]
    end
    return (y or x).." "
end)

print(t)

如果将这两个表合并为一个表,则可能会更简单。

2018-02-02 13:10:07