【问题标题】:string.match throwing error: attempt to index field '?' (a string value)string.match 抛出错误:尝试索引字段“?” (一个字符串值)
【发布时间】:2014-06-29 15:57:31
【问题描述】:

我正在尝试匹配文本文件中一行文本中的三个数据,并将它们存储在表格元素中。每行看起来像这样:

0.277719    0.474610    This
0.474610    0.721241    is
0.721241    1.063209    test

我有一个本地表来保存文本行,我正在尝试按如下方式分配数据。

local data = {}
local file = io.open( "audio/audio.txt", "r" )
local i = 1
for line in file:lines() do
    data[i] = line
    data[i].start, data[i].out, data[i].name = string.match( line, '(%S+)%s*(%S+)%s*(%S+)' )
    i = i + 1
end

data[i] = line 部分工作正常。下一行没有。 我得到的只是data[i].start, data[i].out, data[i].name = string.match( line, '(%S+)%s*(%S+)%s*(%S+)' ) 行上的以下错误:

attempt to index field '?' (a string value)

我做错了什么?

【问题讨论】:

    标签: lua lua-table lua-patterns


    【解决方案1】:

    错误在一行

    data[i] = line
    

    这一行使 data[i] 成为一个字符串变量,它不能有其他字符串索引到它。将该行更改为:

    data[i] = {}
    

    一切正常。

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 2012-03-12
      相关资源
      最近更新 更多