我有以下代码:
function getusers(file)
print (type(file))
for line in file:lines() do
user, value = string.match(file,"(UserName=)(.-)\n")
print(value)
end
f:close()
end
f = assert(io.open('file2.ini', "r"))
t = f:read("*all")
getusers(t)
返回:
print(type(file))
是字符串。 Lua返回错误代码:
lua:reader.lua:3:尝试调用方法'lines'(零值)
我不知道如何解决这个问题。如果我只使用for和end之间的行(for循环中的行),它就会很好用。
答案 0 :(得分:1)
f
是文件处理程序,而t
是包含内容的字符串。您正在尝试调用io.lines
,因此它应该是文件处理程序。实际上,您根本不需要t
。
function getusers(file)
print(type(file))
for line in file:lines() do
user, value = string.match(line,"(UserName=)(.*)")
print(value)
end
f:close()
end
f = assert(io.open('t.txt', "r"))
getusers(f)
我还将模式修改为(UserName=)(.*)
,因为现在您要匹配每一行,而不是整个文件。
答案 1 :(得分:0)
我不知道这是否是最聪明的方式,但现在我使用:
function getusers(file)
for line in file:lines() do
user, value = string.match(line,"(UserName=)(.*)")
if value ~= nil then
print(value)
end
end
f:close()
end
f = assert(io.open('file2.ini', "r"))
getusers(f)
正如您所看到的,我在打印前检查'value'的值。