JavaScript 阿拉伯转汉字

发布于 2023-05-03 13:01:07 字数 1397 浏览 49 评论 0

function numberToChinese(num) {
    const units = ['', '十', '百', '千', '万'];
    const digits = ['', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
    const bigUnits = ['', '万', '亿', '兆'];

    let result = '';
    let numStr = num.toString()
    let numLen = numStr.length;
    let hasZero = false; // 是否有连续的0
    let zeroCount = 0


    for (let i = 0; i < numLen; i++) {
        let digit = Number(numStr[i]);
        const pos = numLen - i
        let unit = units[(pos - 1) % 4];

        if (digit === 0) {
            hasZero = true;
            zeroCount++
        } else {
            if (hasZero) {
                result += '零';
                hasZero = false;
                zeroCount = 0
            }
            result += digits[digit] + unit;
        }

        // 处理大单位
        if (zeroCount !== 4 && pos > 4 && (pos - 1) % 4 === 0) {
            let bigUnit = bigUnits[Math.floor(pos / 4)];
            result += bigUnit;
            zeroCount = 0
        }
    }

    return result;
}


console.log(numberToChinese(1234)); // 一千二百三十四
console.log(numberToChinese(10000)); // 一万
console.log(numberToChinese(10001)); // 一万零一
console.log(numberToChinese(100000000)); // 一亿
console.log(numberToChinese(123456789)); // 
console.log(numberToChinese(1000100001)); // 

注意点

  1. 注意量词的使用
  2. 注意连续零和末尾零的处理
  3. 超过4位,需要处理大单位

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

东走西顾

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

wanghao

文章 0 评论 0

蓝天

文章 0 评论 0

handsomedeng

文章 0 评论 0

仙女

文章 0 评论 0

石海龙

文章 0 评论 0

dianjvnan

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文