跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
分类索引
最近更改
随机页面
灵兰秘典
帮助
帮助
联系我们
捐助本站
关于本站
MediaWiki帮助
中医百科
搜索
搜索
外观
登录
个人工具
登录
查看“︁Module:MultiReplace”︁的源代码
模块
讨论
English
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
Cargo数据
外观
移至侧栏
隐藏
←
Module:MultiReplace
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} local function MultiReplace(args) local input = args[1] or "{{{1}}}" local plain = args.plain == "yes" local i = 1 local changeList = {} while args[i * 2] do local change = {pattern = args[i * 2], repl = args[i * 2 + 1]} if not change.repl then return require('Module:Error').error{ 'MultiReplace: Unpaired argument: <code>' .. (i * 2) .. ' = ' .. mw.text.nowiki(change.pattern) .. '</code>' } end changeList[i] = change i = i + 1 end local matchList = {} local pos = 1 local len = mw.ustring.len(input) local result = "" while pos <= len do local bestStart = len + 1 local bestStop = len local bestChange for _, change in ipairs(changeList) do local start, stop = mw.ustring.find(input, change.pattern, pos, plain) if start and (start < bestStart) then bestStart = start bestStop = stop bestChange = change end end result = result .. mw.ustring.sub(input, pos, bestStart - 1) if bestChange then local fragment = mw.ustring.sub(input, bestStart, bestStop) result = result .. (plain and bestChange.repl or mw.ustring.gsub(fragment, bestChange.pattern, bestChange.repl, 1)) end pos = bestStop + 1 end return result end function p.main(frame, ...) local args = type(frame) ~= 'table' and {frame, ...} or type(frame.args) ~= 'table' and frame or frame.args[1] and frame.args or frame:getParent().args return MultiReplace(args) end return p
该页面使用的模板:
Module:Arguments
(
查看源代码
)
Module:Documentation
(
查看源代码
)
Module:Documentation/config
(
查看源代码
)
Module:Documentation/styles.css
(
查看源代码
)
Module:Message box
(
查看源代码
)
Module:MultiReplace
(
查看源代码
)
Module:MultiReplace/doc
(
查看源代码
)
Module:Redirect
(
查看源代码
)
Module:Yesno
(
查看源代码
)
返回
Module:MultiReplace
。