从 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 中创建数组的主要内容,如果未能解决你的问题,请参考以下文章

Lua gmatch奇数字符(斯洛伐克字母)

如何在LUA里准确匹配中文词组,求助完整语句

Lua - gmatch科学记数法字符串到数字

如何从数组列表中提取项目并对其进行计数,以便从元素及其总计数(正确)在 Java 中创建映射?

从字典列表中创建NumPy记录数组的最简单方法?

在子数组列表中创建并查找最大值