2

当我尝试运行我的代码时收到以下错误:

lua:readFile.lua:7: attempt to call method 'split' (a nil value) 

我正在自学 Lua 并做一些练习。我正在尝试解析文本文件中的各个值,然后对它们进行处理。我可以打开文件,如果我不尝试解析值,我可以打印内容。
我已经单独尝试过:

dollars, tickets = line:split(" ")  
dollars, tickets = line:split("(%w+)", " ")  

连同其他几个迭代,我现在不记得了。

这是我的代码:

myfile = io.open("C:\\tickets.txt", "r")

if myfile then
print("True")    --test print
for line in myfile:lines() do
    local dollars, tickets = unpack(line:split(" "))
    print(dollars)
end
end
print("Done")  --test print
myfile:close()

这是tickets.txt文件的全部内容:

250 5750
100 28000
50 35750
25 18750

我显然在 split 方法中遗漏了一些东西,但我不知道是什么。

问候。

4

2 回答 2

3

如果您只想从文件中读取数字并且不想强制它们在每行上为两个,您可以使用以下代码:

while true do
  local dollars,tickets = myfile:read("*n","*n")
  if dollars==nil or tickets==nil then break end
  print(dollars)
end
于 2012-09-21T12:59:55.157 回答
2

Lua 中的字符串库不包含“拆分”函数。您必须自己实现一个(Lua wiki 上有示例),或者使用 Lua 的模式匹配功能来解析出这些片段。例如,您可以执行以下操作:

local dollars, tickets = line:match("(%d+) (%d+)")
于 2012-09-21T12:36:24.750 回答