我需要将文件加载到 Lua 的变量中。
假设我得到了
name address email
每个之间都有空间。我需要将其中包含 x 多个此类行的文本文件加载到某种对象中 - 或者至少将一行剪切为字符串数组除以空格。
这种工作在 Lua 中可行吗?我应该怎么做?我对 Lua 很陌生,但我在 Internet 上找不到任何相关的东西。
您想了解Lua模式,它是字符串库的一部分。这是一个示例函数(未测试):
function read_addresses(filename)
local database = { }
for l in io.lines(filename) do
local n, a, e = l:match '(%S+)%s+(%S+)%s+(%S+)'
table.insert(database, { name = n, address = a, email = e })
end
return database
end
这个函数只抓取三个由非空格 ( %S
) 字符组成的子字符串。一个真正的函数会进行一些错误检查以确保模式真正匹配。
要扩展 uroc 的答案:
local file = io.open("filename.txt")
if file then
for line in file:lines() do
local name, address, email = unpack(line:split(" ")) --unpack turns a table like the one given (if you use the recommended version) into a bunch of separate variables
--do something with that data
end
else
end
--you'll need a split method, i recommend the python-like version at http://lua-users.org/wiki/SplitJoin
--not providing here because of possible license issues
但是,这不会涵盖您的姓名中包含空格的情况。