模块:沙盒
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:沙盒/doc创建
local p={}
p['数字转中文']=function (frame)
local number = tonumber(frame.args[1])
if type(number) ~= "number" then
return
end
local numerical_table = {}
local numerical_names = {[0] = "零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}
local numerical_units = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "兆", "十", "百", "千"}
--数字转成表结构存储
local numerical_length = string.len(number)
for i = 1, numerical_length do
numerical_table[i] = tonumber(string.sub(number, i, i))
end
--对应数字转中文处理
local result_numberical = ""
local to_append_zero, need_filling = false, true
for index, number in ipairs(numerical_table) do
--从高位到底位的顺序数字转成对应的从低位到高位的顺序数字单位.
local real_unit_index = numerical_length - index + 1
if number == 0 then
if need_filling then
if real_unit_index == 5 then--万位
result_numberical = result_numberical .. "万"
need_filling = false
end
if real_unit_index == 9 then--亿位
result_numberical = result_numberical .. "亿"
need_filling = false
end
if real_unit_index == 13 then--兆位
result_numberical = result_numberical .. "兆"
need_filling = false
end
end
to_append_zero = true
else
if to_append_zero then
result_numberical = result_numberical .. "零"
to_append_zero = false
end
result_numberical = result_numberical .. numerical_names[number] .. numerical_units[real_unit_index]
if real_unit_index == 5 or real_unit_index == 9 or real_unit_index == 13 then
need_filling = false
else
need_filling = true
end
end
end
result_numberical = result_numberical:gsub('一十','十')
return result_numberical
end
p['测试']=function (frame)
local args = {
'[[分类:式神]]',
'link=none' ,
'format=template' ,
'template=沙盒' ,
'headers=hide' ,
'limit=1000' ,
'named args=1'
}
for i=1,20 do
local z = p['数字转中文']({args={i}})
table.insert( args, string.format('?式神成就%s',z) )
table.insert( args, string.format('?式神成就%s解锁条件',z) )
table.insert( args, string.format('?成就分类%s',z) )
end
for i,v in ipairs(args)do
mw.log(i,v)
end
return frame:callParserFunction{ name = '#ask', args = args }
end
return p