Module:拼音
跳到导航
跳到搜索
本模块用于生成汉字的拼音。
参数
- 1:输入字符串
- uc:非空则全部大写
- ucfirst
- =1:生成的整个字符串的首字母大写
- =2:输入的字符串每个字的拼音首字母大写
- strip:非空则处理所有非文字字符(标点符号等),默认操作为去除
- nonword:将所有非文字字符替换为这个字符串
示例
{{拼音生成|萌百娘}}
:mengbainiang{{拼音生成|uc=1|萌百娘}}
:MENGBAINIANG{{拼音生成|ucfirst=1|萌百娘}}
:Mengbainiang{{拼音生成|ucfirst=2|萌百娘}}
:MengBaiNiang
local module = { } local data = mw.loadData("Module:拼音/Data") function upperFirst(input) return string.upper(mw.ustring.sub(input, 1, 1)) .. mw.ustring.sub(input, 2) end function module.Generate(frame) local parent = frame:getParent() if parent and parent:getTitle() == "Template:拼音生成" then frame = parent end local ucfirst = frame.args["ucfirst"] local ucfirst = (ucfirst and mw.text.trim(ucfirst) ~= "") and tonumber(ucfirst) or 0 local input = (frame.args["strip"] and mw.text.trim(frame.args["strip"])) and mw.ustring.gsub(frame.args[1], "[^%w]+", frame.args["nonword"] or "") or frame.args[1] local result = mw.ustring.gsub(input, "%a", function(char) return ((ucfirst == 2) and upperFirst(data[char]) or data[char]) or char end) if frame.args["uc"] and mw.text.trim(frame.args["uc"]) ~= "" then result = string.upper(result) elseif ucfirst == 1 then result = upperFirst(result) end return result end return module