function string:split(sep)
local sep, fields = sep or ":", {}
local pattern = string.format("([^%s]+)", sep)
self:gsub(pattern,function (c)fields[#fields + 1] = c end)
print(c)
return fields
end
我有上面的代码块。
string.format
函数将separator作为其第二个参数。这是为什么?我们通常将文本blob作为第二个参数,需要格式化。
gsub
函数通常会替换给定的模式。 function(c)
中gsub
的角色是什么?它是如何在这里被调用和使用的? c
来自function(c)
的哪个地方
答案 0 :(得分:3)
在示例代码中,string.format()
的格式说明符为"([^%s]+)"
,其中%s
需要一个字符串,因此第二个参数sep
是一个字符串。
例如,如果sep
的值为","
,则pattern
变为([^,]+)
(一次或多次出现非逗号),这意味着函数{ {1}}用逗号分隔字符串(string:split
)
,
可以将三种类型作为第二个参数,一个字符串,一个函数或一个表。当它是一个函数时,每次匹配发生时都会调用它,所有捕获的子字符串按顺序作为参数传递。有关详细信息,请参阅string.gsub()
。