查看“模块:FormatString”的源代码
←
模块:FormatString
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
高级
特殊字符
帮助
2级
3级
4级
5级
标题
格式
插入
拉丁字母
扩展拉丁字母
国际音标
符号
希腊字母
希腊字母扩展
西里尔字母
阿拉伯字母
扩展阿拉伯字母
希伯来字母
孟加拉字母
泰米尔数字和符号
泰卢固字母
僧伽罗语
梵文
古吉拉特语
泰语
老挝语
高棉语字母
加拿大原住民音节文字
Á
á
À
à
Â
â
Ä
ä
Ã
ã
Ǎ
ǎ
Ā
ā
Ă
ă
Ą
ą
Å
å
Ć
ć
Ĉ
ĉ
Ç
ç
Č
č
Ċ
ċ
Đ
đ
Ď
ď
É
é
È
è
Ê
ê
Ë
ë
Ě
ě
Ē
ē
Ĕ
ĕ
Ė
ė
Ę
ę
Ĝ
ĝ
Ģ
ģ
Ğ
ğ
Ġ
ġ
Ĥ
ĥ
Ħ
ħ
Í
í
Ì
ì
Î
î
Ï
ï
Ĩ
ĩ
Ǐ
ǐ
Ī
ī
Ĭ
ĭ
İ
ı
Į
į
Ĵ
ĵ
Ķ
ķ
Ĺ
ĺ
Ļ
ļ
Ľ
ľ
Ł
ł
Ń
ń
Ñ
ñ
Ņ
ņ
Ň
ň
Ó
ó
Ò
ò
Ô
ô
Ö
ö
Õ
õ
Ǒ
ǒ
Ō
ō
Ŏ
ŏ
Ǫ
ǫ
Ő
ő
Ŕ
ŕ
Ŗ
ŗ
Ř
ř
Ś
ś
Ŝ
ŝ
Ş
ş
Š
š
Ș
ș
Ț
ț
Ť
ť
Ú
ú
Ù
ù
Û
û
Ü
ü
Ũ
ũ
Ů
ů
Ǔ
ǔ
Ū
ū
ǖ
ǘ
ǚ
ǜ
Ŭ
ŭ
Ų
ų
Ű
ű
Ŵ
ŵ
Ý
ý
Ŷ
ŷ
Ÿ
ÿ
Ȳ
ȳ
Ź
ź
Ž
ž
Ż
ż
Æ
æ
Ǣ
ǣ
Ø
ø
Œ
œ
ß
Ð
ð
Þ
þ
Ə
ə
local queue = require("Module:queue") local FormatString = {} function FormatString.buildTrie(format) root = {} root.next = {} for i, item in ipairs(format) do local cur = root for i = 1, mw.ustring.len(item.format), 1 do local c = mw.ustring.sub(item.format, i, i) if cur.next[c] == nil then cur.next[c] = {} -- new node cur.next[c].next = {} cur.next[c].father = cur cur.next[c].char = c end cur = cur.next[c] end cur.callback = item.callback cur.len = mw.ustring.len(item.format) end root.fail = {} local q = queue q:push(root) while not(q:empty()) do local cur = q:front() q:pop() for i, t in pairs(cur.next or {}) do q:push(t) end if (cur ~= root) and (cur.father ~= root) then cur2 = cur.father while cur2.fail.next[cur.char] ~= nil and cur2 ~= root do cur2 = cur2.fail end cur.fail = cur2.fail.next[cur.char] or root else cur.fail = root end end return root end function FormatString.replaceStr(str, trie, extras) local cur_state = trie local i = 1 local matched_times = 0 while i <= mw.ustring.len(str) do local c = mw.ustring.sub(str, i, i) while cur_state.next[c] == nil and cur_state ~= trie do cur_state = cur_state.fail or trie end cur_state = cur_state.next[c] or trie if cur_state.callback ~= nil then matched_times = matched_times + 1 local newStr = cur_state.callback(matched_times, extras) -- mw.log(mw.ustring.sub(str, i - cur_state.len + 1, i)..' -> '..newStr) str = mw.ustring.sub(str, 1, i - cur_state.len)..newStr..mw.ustring.sub(str, i + 1, mw.ustring.len(str)) i = i + mw.ustring.len(newStr) - cur_state.len cur_state = trie end i = i + 1 end return str end return FormatString
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0
0
0
1:0
调试控制台
* 此模块的返回的值存于控制台变量“p”中,包括没有保存的变更。 * 在一行的前面加上“=”或使用print()可以将其作为表达式来计算。表格请使用mw.logObject()。 * 在模块代码中使用mw.log()和mw.logObject()来向控制台发送消息。
该页面使用的模板:
模块:FormatString/doc
(
查看源代码
)
返回至
模块:FormatString
。
导航菜单
个人工具
登录
名字空间
模块
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
随机页面
最近更改
最新文件
常用
上传多个文件
工具
链入页面
相关更改
特殊页面
页面信息