我需要将文本从文本文件/字符串传输到具有2个位置向量的表。像这样:
文字档案:
Gustavo 20
Danilo 20
Dimas 40
表
Names = {{Gustavo,20},{Danilo,20},{Dimas,40}}
需要帮助才能做到这一点。
答案 0 :(得分:2)
您可以使用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"
无论哪种方式,请确保在文件名中将正确的路径放在引号中。
答案 1 :(得分:2)
Josh答案的较短变化直接将结果放入表中。这匹配字母名称后跟至少一个空格和数字,但您可以根据需要更改模式:
Names = {}
for line in io.lines(filename) do
Names[ #Names+1 ] = {line:match('(%a+)%s+(%d+)')}
end