最近在开发项目的时候遇到一个需求,要求把金额数转成繁体中文显示,例如1700,显示成壹仟柒佰元,不排除后期会更改需求为显示简体中文,因此统一进行封装。

/*** @description 数字转中文* @param {Number|String}   num     数字[正整数]* @param {String}          type    文本类型,lower|upper,默认upper* @example number2text(100000000) => "壹亿元整"*/
function number2text(number, type = 'upper') {// 配置const confs = {lower: {num: ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'],unit: ['', '十', '百', '千', '万'],level: ['', '万', '亿']},upper: {num: ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'],unit: ['', '拾', '佰', '仟'],level: ['', '万', '亿']},decimal: {unit: ['分', '角']},maxNumber: 999999999999.99}// 过滤不合法参数if (Number(number) > confs.maxNumber) {console.error(`The maxNumber is ${confs.maxNumber}. ${number} is bigger than it!`)return false}const conf = confs[type]const numbers = String(Number(number).toFixed(2)).split('.')const integer = numbers[0].split('')const decimal = Number(numbers[1]) === 0 ? [] : numbers[1].split('')// 四位分级const levels = integer.reverse().reduce((pre, item, idx) => {let level = pre[0] && pre[0].length < 4 ? pre[0] : []let value = item === '0' ? conf.num[item] : conf.num[item] + conf.unit[idx % 4]level.unshift(value)if (level.length === 1) {pre.unshift(level)} else {pre[0] = level}return pre}, [])// 整数部分const _integer = levels.reduce((pre, item, idx) => {let _level = conf.level[levels.length - idx - 1]let _item = item.join('').replace(/(零)\1+/g, '$1') // 连续多个零字的部分设置为单个零字// 如果这一级只有一个零字,则去掉这级if (_item === '零') {_item = ''_level = ''// 否则如果末尾为零字,则去掉这个零字} else if (_item[_item.length - 1] === '零') {_item = _item.slice(0, _item.length - 1)}return pre + _item + _level}, '')// 小数部分let _decimal = decimal.map((item, idx) => {const unit = confs.decimal.unitconst _unit = item !== '0' ? unit[unit.length - idx - 1] : ''return `${conf.num[item]}${_unit}`}).join('')// 如果是整数,则补个整字return `${_integer}元` + (_decimal || '整')
}

完美调用

number2text(1700) // 壹仟柒佰元
number2text(1700, 'lower') // 一千七百元

js实现金额数转简体/繁体中文相关推荐

  1. php 繁体自动转简体,繁体中文转换为简体中文的PHP函数

    繁体中文转换为简体中文的PHP函数 更新时间:2006年10月09日 00:00:00   作者: 前几天我在oso论坛上问有没有这个源程序,没人回复.终于下定决心移植一个这样的函数,感谢网友Keye ...

  2. JavaScript简体繁体中文转换

    <script type="text/javascript" language="javascript"> <!-- function win ...

  3. 讨巧的站点简体/繁体中文切换方法

    http://www.cnbruce.com/blog/showlog.asp?cat_id=5&log_id=780 这个繁体是简体字体下的繁体字而已,只是表现形式而已,不过话说回来,在网页 ...

  4. 正则表达式--匹配简体繁体中文姓名,还有少数民族的·号

    1 ^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$ 匹配:羅伊爾·阿凡提·买买提 转载于:https://www.cnblogs.com/Mumble2/p/107667 ...

  5. java 判断繁体_java获取系统语言(区分简体中文和繁体中文)

    [(一).功能  当一个系统有了一定规模,可能要销售到国外其它国家,这时候要实现多种资源文件.  本代码示例将介绍怎样实现: 一个系统同时具有简体,繁体,英文等不同资源文 之前做android应用时遇 ...

  6. JS 实现网页的简体繁体切换

    网页中实现 js 繁体简体切换 这个是公司一位同事实现的功能,网站的实施是我,但不知道是他原创还是借鉴的. 首先是封装的 js 代码 1 // 网页简繁体转换 2 // 本js用于客户在网站页面选择繁 ...

  7. java web网站 js 简体繁体切换_通过JS实现网站繁体简体互换

    //网页简繁体转换//本js用于客户在网站页面选择繁体中文或简体中文显示,默认是正常显示,即简繁体同时显示//在用户第一次访问网页时,会自动检测客户端语言进行操作并提示.此功能可关闭//本程序只在UT ...

  8. 中文简体繁体之间的转换

    中文简体繁体之间的转换 2007 年 09 月 13 日 星期四 10:58 对网页进行简繁字体转换的方法一般有两种:一是使用<简繁通>这样的专业软件,另外一种是制作两套版本的网页.显然, ...

  9. 【自然语言处理】opencc:中文繁体☞中文简体的转换

    在看蚂蚁金服人工智能团队写的一篇关于中文的NLP的论文时,才知道有opencc这么个库,可以将中文繁体转为中文简体,大大简化了处理过程. 如果用的pycharm直接点开解释器,搜opencc,然后in ...

最新文章

  1. 热烈欢呼:cnblogs.com博客园首页通过W3C验证
  2. 新建一个doophp项目
  3. 12.6日个人工作总结
  4. CSS 修饰图片的5种方法
  5. Linux有待完善的小缺陷的累记
  6. 以太网峰会:网络管理员已成濒危职业
  7. IAR软件中直接查看编译后代码大小
  8. 商城系统PageBean分页 Cookie存储浏览记录
  9. python设计模式-模板方法模式 1
  10. AgileEAS.NET平台开发实例-药店系统-视频教程系列-索引
  11. oracle数据库如何写翻页_在oracle数据库中的分页SQL语句怎么写?
  12. VS2010对话框中使用MSChart控件
  13. 华为手机USB测试灰色
  14. 融金所:云办公提升P2P金融“生命”
  15. springboot 优雅关闭_SpringBoot 2.3.0 优雅关闭 shutdown graceful
  16. php获取汉字的首字母,PHP获取汉字的首字母
  17. 【论文阅读01】2021 兵棋推演的智能决策技术与挑战 尹奇跃
  18. SQL高效先进先出算法
  19. 云计算基础架构 (三)Mongodb
  20. 这个夏天,有些东西需要记忆

热门文章

  1. s3cmd安装及使用命令
  2. 劳动经济学试题库【1】
  3. JSR-303数据校验
  4. 扁平脸逆袭“骨相美人”,毛戈平高光粉膏怎能缺席
  5. SpringBoot搭建第三方支付接口(一)
  6. 自然语言处理1 -- 分词
  7. 2019年github上的18个热门项目
  8. python tokenizer_中文分词工具 MiNLP-Tokenizer
  9. 华为融合电信云解决方案包括_华为:电信云打造5G智慧大脑
  10. Baumer工业相机堡盟工业相机如何使用BGAPI SDK解决两个万兆网相机的同步采集不同步的问题