首页 > 编程语言 >【算法题】将十二位之内的数字转为汉字输出

【算法题】将十二位之内的数字转为汉字输出

时间:2023-09-22 14:23:35浏览次数:34  
标签:index 十二位 const number 汉字 ele 算法 return returnStr

// 单位,末尾 个 省略
    const charUnitArr = ['千', '百', '十', '亿', '千', '百', '十', '万', '千', '百', '十', ''];
    // 数字 0-9的 汉字写法
    const chartNumberArr = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    function transformToCharNumber(number) {
        if (isNaN(number) || (number !== 0 && !number)) {
            console.error('请输入数字');
            return number;
        }
        const numberStrArr = number.toString().split('');
        // 超过12位的不纳入计算范围内
        if (numberStrArr.length > 12) {
            console.error('数字过大');
            return number;
        }
        // 数字汉化
        const numberCharArr = numberStrArr.map((ele) => chartNumberArr[+ele]);
        const numberStrArrLength = numberCharArr.length;
        // 裁取对应数字位数的单位
        const unitArr = charUnitArr.slice(-numberStrArrLength);
        // 数字加上对应位数的单位
        const tempNumberWithUnitArr = numberCharArr.map((ele, index) => {
            return `${ele}${unitArr[index]}`;
        });
        // 保留数字类型
        const numberArr = numberStrArr.map((ele) => +ele);
        // 做去“零”处理
        const resultStr = numberArr.map((ele, index) => {
            if (ele !== 0 || (ele === 0 && numberArr.length === 1)) return tempNumberWithUnitArr[index];
            if (numberArr[index - 1] === 0 && numberArr[index + 1] !== 0) {
                const [num, unit] = tempNumberWithUnitArr[index].split('');
                return num;
            }
            if (numberArr[index] === 0) {
                const [num, unit] = tempNumberWithUnitArr[index].split('');
                if (unit === '亿' || unit === '万') {
                    return unit;
                }
            }
            return '';
        })
        // 去零处理后避免出现亿万连续
        let returnStr = resultStr.join('').replace('亿万', '亿');
        // 符合常用习惯
        if (returnStr.slice(0, 2) === '壹十') {
            returnStr = returnStr.slice(1);
        }
        // 当个位数大于一位,去掉末尾的零,
        if (returnStr.length > 1) {
            returnStr = returnStr.replace(/[零.]$/, '');
        }
        return returnStr;
    }
    const testArr = [10, 0, 100, 1000008, 300001008, 100000, 123, 654646, 8778799, 54684897894, 945468489789, null, undefined, 'adad'];
    testArr.forEach((ele) => {
        console.log(ele, transformToCharNumber(ele));
    })

代码运行结果如下

 

标签:index,十二位,const,number,汉字,ele,算法,return,returnStr
From: https://www.cnblogs.com/LeoXnote/p/17722246.html

相关文章

  • [算法学习笔记] 浅谈二路归并&双指针&归并排序
    二路归并·双指针是一种优化思想。它可以在\(O(n)\)的复杂度下把两个长度为\(n\)的有序数组合并为一个有序数组。它的具体处理方法如下:定义两个长度为\(n\)的升序数组\(a,b\)。,合并完后长度为\(2n\)的数组\(c\),初始化两个指针\(x=y=1\)(这里数组下标从\(1\)开始)......
  • 基本差分算法:一维差分、二维差分
    1、一维差分首先要知道,差分是前缀和的逆运算,a1a2……an前缀和b1b2……bn差分以AcWing.797为例,题目要求如下:输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l,r,c,表示将序列中[l,r]之间的每个数加上c。请你输出进行完所有操作后的序......
  • 基本前缀和算法:一维前缀和、二维前缀和、子矩阵和
    1、一维前缀和以AcWing.795为例,题目要求如下:输入一个长度为N的整数序列。接下来再输入m个询问,每个询问输入一对l,r。对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一......
  • R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例|附代码数据
    原文链接:http://tecdat.cn/?p=21545原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于贝叶斯推断的研究报告,包括一些图形和统计输出。示例1:使用MCMC的指数分布采样任何MCMC方案的目标都是从“目标”分布产生样本。在这种情况下,我们将使用平均值为1的指数分布作为我们......
  • R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实
    原文链接:http://tecdat.cn/?p=23236 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于贝叶斯MCMC的研究报告,包括一些图形和统计输出。什么是频率学派?在频率学派中,观察样本是随机的,而参数是固定的、未知的数量。概率被解释为一个随机过程的许多观测的预期频率。有一......
  • 方案:TSINGSEE青犀智能分析网关皮带撕裂算法的场景应用
    在工地矿山等现实场景中,皮带运输在生产过程中是必不可少的,然而,由于长时间高强度的运转,皮带很容易发生撕裂、破损、跑偏等问题。这些问题会严重影响生产速度,甚至会导致严重的安全事故。为了有效预防此类安全事故发生,提高生产效率,TSINGSEE青犀AI智能分析网关——皮带撕裂算法可以解......
  • 安防监控视频AI智能分析网关:人流量统计算法的应用场景汇总
    TSINGSEE青犀人流量检测算法是内置在智能分析网关中的一种能够通过AI分析和计算人群数量以及密度的算法技术,在提升城市管理效率、改善用户体验和增加安全性方面发挥着重要作用。人流量检测算法在许多领域都有广泛的应用,如智慧城市、智慧交通、智慧景区等。人流量检测算法在一网......
  • 研究报告:周界警戒AI算法+视频智能分析在安全生产场景中的应用
    长期以来,周界防范安防系统在大型园区、工厂、社区、机场、火车站站台、重点单位等领域应用较为广泛和常见。随着AI人工智能等新兴技术的快速发展与落地应用,通过AI智能检测与视频智能分析技术,现代化的周界安防系统可以做到全天候快速、准确地发现入侵等异常事件,并及时报警遏制。今......
  • 研究报告:周界警戒AI算法+视频智能分析在安全生产场景中的应用
    长期以来,周界防范安防系统在大型园区、工厂、社区、机场、火车站站台、重点单位等领域应用较为广泛和常见。随着AI人工智能等新兴技术的快速发展与落地应用,通过AI智能检测与视频智能分析技术,现代化的周界安防系统可以做到全天候快速、准确地发现入侵等异常事件,并及时报警遏制。今天......
  • Lnton羚通算法算力云平台员工工作服穿戴算法检测 智能监控工作服算法识别
    员工工作服穿戴的AI识别算法基于YOLOv8和Python网络模型的人工智能技术。该算法通过实时监控现场人员的工作服穿戴情况,并在发现违规情况时自动发出警报。我们选择了当前最新的YOLO卷积神经网络模型YOLOv8来进行火焰识别检测。YOLOv8的每个图像推理时间最快为0.007秒,即每秒可处理140......