Lua中的string.gmatch()函数会返回nil吗?

local str = ",23,4"
local t = {}
local i = 1

for temp in str:gmatch("[^,]+") do
  t[i] = temp
  i = i + 1
end

我是个Lua新手。这是我的代码。我期望t[1]nil,然而,gmatch()跳过了它而不是返回nil。表t[]只有两个键值。如果我把表t[]改成这样

t[1] = nil
t[2] = 23
t[3] = 4

,我该怎么使用gmatch()呢?还是说需要用什么别的函数?

点赞
用户4984564
用户4984564

gmatch() 没有跳过任何内容;它只是按照你告诉它的方式找到了每一个 "[^,]+" 的出现次数,其中有两个,并将它们逐个传递到循环体中。

如果你想匹配空字符串,可以将你的模式改为 "[^,]*"

+ 匹配一个或多个

* 匹配零个或多个

请参考 https://www.lua.org/manual/5.3/manual.html#6.4.1

2020-06-25 11:21:53