详解中文数字转换

原创 WALL-E 教程 javascript 293阅读 2018-06-08 10:14:40 举报

需求

标题为中文数字转换,其实是介绍如何将阿拉伯数字转换为中文数字显示,例如将782129376转换为七亿八千二百一十二万九千三百七十六。

实现步骤

资源准备

先定义一个数组用于对应单个数字和中文的关系

再定义一个数组对应数字的单位

那万和亿两个单位跑哪去了,先别着急,继续看

拆分数字

按照单位的要求,我们把数字从右往左,每四个划为一组,每一组都对应"个、十、百、千"四位。(最左侧剩余的数字不满四个也为一组)

生成了一个二维数组

初步转换

有了数字和单位两者的对应关系,先进行初步的转换,然后再找找有哪些问题

看起来单个组的转换是正常的

拼接数组

如何将得到的转换数组合理拼接?直接拼接会发现组与组之间少了单位,
所以我们要找回丢失的万和亿,我们再定义一个数组对应块的单位

我们更新一下上面的转换代码,添加块的单位

看起来似乎得到了我们想要的东西,最后数组拼接在一起即可。

坑在哪

如果真得能这么轻松解决就太好了,然而我们换个数字看看

从最后得到的结果中,发现第一个坑,如果为当前数字为0则不需要带单位,修改如下

去除为零数字的单位后,发现第二个坑,类似"一千零零一亿"中多个零应该合并为一个,我们借助正则的力量来完成

合并零后,发现第三个坑,在"零一十零万", "零一百零"中,末尾零不需要再显示,所以继续添加正则剔除末尾零

最后一个矫正,通常来说10这个数字比较特殊,一般直接称为,而不是一十,所以再添加一个正则替换一十

结尾

感谢观看《我的填坑记》,我们下期再见
demo源码

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复