Lua中的String.format和gsub

时间:2014-04-08 11:40:38

标签: string lua gsub string.format lua-patterns

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

我有上面的代码块。

  1. string.format函数将separator作为其第二个参数。这是为什么?我们通常将文本blob作为第二个参数,需要格式化。

  2. gsub函数通常会替换给定的模式。 function(c)gsub的角色是什么?它是如何在这里被调用和使用的? c来自function(c)的哪个地方

1 个答案:

答案 0 :(得分:3)

  1. 在示例代码中,string.format()的格式说明符为"([^%s]+)",其中%s需要一个字符串,因此第二个参数sep是一个字符串。

    例如,如果sep的值为",",则pattern变为([^,]+)(一次或多次出现非逗号),这意味着函数{ {1}}用逗号分隔字符串(string:split

  2. ,可以将三种类型作为第二个参数,一个字符串,一个函数或一个表。当它是一个函数时,每次匹配发生时都会调用它,所有捕获的子字符串按顺序作为参数传递。有关详细信息,请参阅string.gsub()