【问题标题】:Text File to Lua Array Table文本文件到 Lua 数组表
【发布时间】:2015-06-27 08:40:52
【问题描述】:

我需要将文本从文本文件/字符串传输到具有 2 个位置向量的表格。像这样:

文本文件:

Gustavo 20
Danilo 20
Dimas 40

表格

Names = {{Gustavo,20},{Danilo,20},{Dimas,40}}

需要帮助才能做到这一点。

【问题讨论】:

  • 欢迎来到 Stack Overflow。发布问题时,您需要解释您为解决问题所做的工作。进行一些研究。我们在这里为您提供帮助,而不是为您做所有事情。我已经继续并帮助您完成了这项工作,但如果您不投入一些精力进行研究,您将继续遭到反对。
  • 遗憾的是,新来者被“欢迎”而投反对票。任何初学者(无论它可能是什么主题)实际上都可能已经付出了很多努力来尝试解决大多数其他人看来“显而易见”的问题。为什么一个人必须表现出不成功的(而且对于更有知识的人来说通常是“愚蠢的”)尝试只是为了证明在寻求帮助之前已经付出了一些努力,这超出了我的理解。而且,“在被证明有罪之前是无辜的”发生了什么?

标签: arrays file-io lua lua-table file-read


【解决方案1】:

您可以为此使用io.lines()

vectorarray = {}
for line in io.lines(filename) do
  local w, n = string.match(line, "^(%w+)"), string.match(line, "(%d+)$")
  table.insert(vectorarray, {w, n})
end

当然,这是假设它是绝对行尾和绝对开始,并且每行只有这两个选项。如果您在许多其他地方使用文件名,那么您可以为文件名设置一个全局变量并每次调用它,例如:

arrayfile = "C:/arrayfile.txt"

无论哪种方式,请确保将正确的路径放在文件名的引号中。

【讨论】:

    【解决方案2】:

    乔希答案的一个较短的变体,直接将结果放入表格中。这匹配字母名称后跟至少一个空格和数字,但您可以根据需要更改模式:

    Names = {}
    for line in io.lines(filename) do
      Names[ #Names+1 ] = {line:match('(%a+)%s+(%d+)')}
    end
    

    【讨论】:

    • 哈,我倾向于比预期晚得多地注意到这种更短的方式。喜欢紧凑!
    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    相关资源
    最近更新 更多