项目需要,需将任意的阿拉伯数字以中文字符的方式转换展示,这里记录一下
主要实现的逻辑:
1,定义2张初始表:
tbl1 = {[0] = "零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}
tbl2 = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "兆", "十", "百", "千"}
对应位数上的数字是多少显示多少,位数的单位是多少加多少,类似:
1024 ==> 一千零百二十四;
100001==>一百零十零千零百零十一;
个位数的单位以空字符串处理。
2,中间遇到多个零的情况只保留一个。
3,进制数处理“万”,“亿”等,每4档=0的情况,要手动设置单位进制。
直接上代码:
function convert_arab_to_chinese(number)
assert(tonumber(number), "传入参数非正确number类型!")
local numerical_tbl = {}
local numerical_names = {[0] = "零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}
local numerical_units = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "兆", "十", "百", "千"}
--01,数字转成表结构存储
local numerical_length = string.len(number)
for i = 1, numerical_length do
numerical_tbl[i] = tonumber(string.sub(number, i, i))
end
--02,对应数字转中文处理