从 gmatch 返回的列表在 Lua 中创建数组
Posted
技术标签:
【中文标题】从 gmatch 返回的列表在 Lua 中创建数组【英文标题】:Creating arrays in Lua from list returned by gmatch 【发布时间】:2014-03-03 06:01:44 【问题描述】:我正在用 Lua 编程,到目前为止我有这个。
S=tostring(M[i].AllSegmentsList) --it returns "MSH, PID"
for i in string.gmatch(S, ",") do --I have ", " as delimiter
t= --Now, I want the values returned by delimiter to be added into an array.
end
我该怎么做。
【问题讨论】:
【参考方案1】:先声明表格,然后在循环中添加元素,如下所示:
local t =
for i in S:gmatch("([^,%s]+)") do
t[#t + 1] = i
end
模式[^,%s]+
匹配一个或多个非逗号、非空格字符。
【讨论】:
@lhf 现已修复。我想多了。%w
假设项目是由字母和数字组成的单词,这对于给出的示例来说很好,但可能不够通用。
@lhf 我把它改成了[^,%s]+
,希望能满足OP的需求。
我不会推荐t[#t + 1]
方法。最好将当前索引存储在局部变量中。使用#t Lua 必须在每次迭代时计算表的长度。
@W.B.如果桌子很大,我同意你的看法。我使用#
运算符,因为它更清晰,并且在大多数情况下,表格很小,因此性能不是问题。以上是关于从 gmatch 返回的列表在 Lua 中创建数组的主要内容,如果未能解决你的问题,请参考以下文章