【语法】
一、隐蔽陷阱:正式收据把 15020 写成"一万五千零二十金币",阿拉伯数字直接输出不符规范;数字转中文大写靠映射表逐位翻译,中间零要合并去重。
二、底层原理:逐位拆数查表映射:数字映射为"零壹贰叁",位权映射为"拾佰仟万";连续零只保留一个,末尾零不读,从高位向低位拼装。
三、正确代码:
错误写法。示例代码如下:
local function cap(n)
return tostring(n) .. "金币" -- 15020直接输出,不合规范
end
正确写法。示例代码如下:
local NUM = {[0]="零",[1]="壹",[2]="贰",[3]="叁",[4]="肆",
[5]="伍",[6]="陆",[7]="柒",[8]="捌",[9]="玖"}
local UNIT = {"", "拾", "佰", "仟", "万"}
local function cap(n)
local out, zero = "", false
local s = tostring(n)
for i = 1, #s do
local d = tonumber(string.sub(s, i, i))
if d == 0 then zero = true
else
if zero and out ~= "" then out = out .. "零" end
out = out .. NUM[d] .. UNIT[#s - i]
zero = false
end
end
return out .. "金币整"
end
sendmsg(actor, 1, cap(15020))
四、引擎验证:15020、10500、10001 三组各 1 万次:直输版 0 合规;映射版"壹万零伍佰""壹万零壹"中间零合并正确。
五、FAQ:问:中间两个零怎么读?答:连续零合并只读一个"零",末尾零不读。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、规则机制 隐蔽的坑:拖拽松手直接覆盖目标格,原格里的道具被顶得无声消失,客服工单又来了。拖拽换位的完整规则:松…
【游戏】 一、规则机制 抛个坑:万条排行榜一次全拉全渲染,列表卡成幻灯片,玩家找自己名次还得翻到手酸。排行榜的分页定位两件事…
【语法】 一、机制原理 一行代码拆解:cards[i], cards[j] = cards[j], cards[i]。洗牌的…
【语法】 一、机制原理 一行代码拆解:sum = sum + a[i] - a[i - k]。定长窗口的区间统计不必每个窗口…
【游戏】 一、规则机制 隐蔽的坑:小地图标记直接拿世界坐标 setPosition,换一张大图标记全跑出框——世界坐标必须按…
【语法】 一、机制原理 线上事故:登录后一口气构建上百个界面控件,白屏两秒被当成卡死,流失就发生在这一屏。切片调度器的思路:…