如何在 gmatch 中使用多个模式

你好,我正在尝试从文本文件中获取一些数据并将其放入表格中。 我不知道如何添加多个模式,同时做我想做的事情,我知道这个单独的模式 %a+ 找到字母和 %b{} 找到方括号,但我不确定如何将它们组合在一起,这样我可以将字母作为键和括号作为值找到并将它们放入我可以使用的表格中。

文本文件:

left = {{0,63},{16,63},{32,63},{48,63}}
right = {{0,21},{16,21},{32,21},{48,21}}
up = {{0,42},{16,42},{32,42},{48,42}}
down = {{0,0},{16,0},{32,0},{48,0}}

代码:

``` local function get_animations(file_path) local animation_table = {} local file = io.open(file_path,"r") local contents = file:read("*a") for k,v in string.gmatch(contents,("(%a+)=(%b{})")) do -- A 获取单词和%b{} 找到括号 animation_table [k] = v print("key:".. k .." Value:".. v) end file:close() end

get_animations("Sprites/Player/MainPlayer.txt")

原文链接 https://stackoverflow.com/questions/70838127

点赞
stackoverflow用户2858170
stackoverflow用户2858170

这是有效的 Lua 代码,为什么不直接执行它?

left = {{0,63},{16,63},{32,63},{48,63}}
right = {{0,21},{16,21},{32,21},{48,21}}
up = {{0,42},{16,42},{32,42},{48,42}}
down = {{0,0},{16,0},{32,0},{48,0}}

如果你不想将数据放到全局变量中,可以使用字符串库将它转换为

return {
    left = {{0,63},{16,63},{32,63},{48,63}},
    right = {{0,21},{16,21},{32,21},{48,21}},
    up = {{0,42},{16,42},{32,42},{48,42}},
    down = {{0,0},{16,0},{32,0},{48,0}},
}

在执行前。

如果你坚持要解析该文件,可以为每一行使用类似以下的代码:

local line = "left = {{0,63},{16,63},{32,63},{48,63}}"
print(line:match("^%w+"))
for num1, num2 in a:gmatch("(%d+),(%d+)") do
  print(num1, num2)
}

这应该足以让您开始了。当然,您不会打印这些值,而是将其放入表中。

2022-01-24 17:59:58