Module:Split
来自Vocawiki
更多操作
模块文档
这个模块的作用是使用指定的分隔符分割一个字符串,并生成几个变量。
使用例
{{#invoke:Split|main|str=苹果,香蕉,西瓜|ptn=,|name=fruit}}
生成的变量:
{{#var:fruit1}} = 苹果
{{#var:fruit2}} = 香蕉
{{#var:fruit3}} = 西瓜
{{#var:fruit.count}} = 3
local module = {}
local getArgs = require('Module:Arguments').getArgs
function module._main(args, frame)
local str = args['str'] or ''
local ptn = args['ptn'] or ''
ptn = mw.text.decode(mw.text.unstripNoWiki(ptn))
local name = args['name'] or 'foo'
if args['reg'] ~= 'on' then
ptn = mw.ustring.gsub(ptn, '([%%%(%)%.%+%-%*%?%[%]%^%$])', '%%%1')
end
local datas = mw.text.split(str, ptn)
for i, v in ipairs(datas) do
v = mw.ustring.gsub(v, '^%s*(.+)%s*$', '%1')
frame:callParserFunction( '#vardefine', name..i, v)
end
frame:callParserFunction( '#vardefine', name..'.count', #datas)
end
function module.main(frame)
local args = getArgs(frame)
return module._main(args, frame)
end
return module