记一次阿拉伯数字转中文的JavaScript实现
最近在写前端项目,存在这样一个需求,后端接口返回一个阿拉伯数字,但是我在前端需要展示成中文。
首先监于这是排行榜数据,类似于xx区xx榜第一名,xx区xx榜第二名,我认为数字范围不会很大,我的js代码如下:
// 10以内的阿拉伯数字转中文
fucntion(num) {var chnNumChar = ["零","一","二","三","四","五","六","七","八","九"];// 后端传过来的是字符串,例如'1'、'6'等num = parseInt(num);return chnNumChar[num];
}
第二天上测试环境,有的榜单数据显示:
这很明显榜单排名达到了两位数,于是只能继续改成这样
// 100以内的阿拉伯数字转中文
function(num) {var chnStr,chnNumChar = ["","一","二","三","四","五","六","七","八","九", '十'];num = parseInt(num);if(num <= 10) {chn = chnNumChar[result.rkvalue];} else if(num > 10 && num < 20) {chn = '十' + chnNumChar[num - 10];} else if(num >= 20) {chn = chnNumChar[Math.floor(num/10)] + '十' + chnNumChar[num % 10];}return chnStr;
}
到了第三天早上,是这个样子的
好吧,榜单大概是出现了三位数。。。于是,为了一劳永逸,最后的代码改成了这个样子:
// 阿拉伯数字转中文汉字
var numberToChinese = function() {var chnNumChar = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"],chnUnitSection = ["", "万", "亿", "万亿", "亿亿"],chnUnitChar = ["", "十", "百", "千"];function sectionToChinese(section) {var strIns = '',chnStr = '',unitPos = 0,zero = true,v;while (section > 0) {v = section % 10;if (v === 0) {if (!zero) {zero = true;chnStr = chnNumChar[v] + chnStr;}} else {zero = false;strIns = chnNumChar[v];strIns += chnUnitChar[unitPos];chnStr = strIns + chnStr;}unitPos++;section = Math.floor(section / 10);}return chnStr;}return function (num) {var unitPos = 0,strIns = '',chnStr = '',needZero = false,section;num = parseInt(num);if (num === 0) {return chnNumChar[0];}while (num > 0) {section = num % 10000;if (needZero) {chnStr = chnNumChar[0] + chnStr;}strIns = sectionToChinese(section);strIns += (section !== 0) ? chnUnitSection[unitPos] : chnUnitSection[0];chnStr = strIns + chnStr;needZero = (section < 1000) && (section > 0);num = Math.floor(num / 10000);unitPos++;}return chnStr;}
}();
顺带说一下,以上均不涉及ES6语法,大概是兼容性把我搞怕了。。
另外命名遵循单一var模式。
记一次阿拉伯数字转中文的JavaScript实现相关推荐
- JavaScript实现阿拉伯数字转中文数字
JavaScript实现阿拉伯数字转中文数字 项目场景: 解决方案 项目场景: 项目相关背景: 阿拉伯数字转中文数字,例如123,转为一百二十三 解决方案 function intToChinese ...
- javascript 阿拉伯数字转中文
javascript 阿拉伯数字转中文:单独处理一十情况 export const numberToChinese = (num) => {if (isNaN(parseInt(num))) { ...
- 阿拉伯数字跟中文汉字互转js
有些时候需要用到阿拉伯数字转中文汉字的需求,阿拉伯数字在代码上比较好操作,比如++,–等操作,加上jsp里的foreach标签,status里可以知道当前行号,但是页面需要显示中文汉字,如第1阶段,第 ...
- 金额阿拉伯数字转换为中文大写
最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下. 第一种方法相对复杂 private static readonly String cnNumber = " ...
- php 数字转中文函数 1转一,一个阿拉伯数字转中文数字的函数-PHP教程,PHP函数
最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的. 感觉到我的算法不错,所以贴出来共享一下 如果要用于金额的转换,对小数部分的处理要做一下修改 fun ...
- 制打印如下所示的n行数字金字塔_一日一技:在Python中实现阿拉伯数字加上中文数字...
在Python 3里面,中文是可以作为变量名的,而运算符又可以重载,基于这两个特性,我们可以实现阿拉伯数字与中文数字的四则运算. 首先我们定义一个类 Num: class Num(object): d ...
- 大写汉字转阿拉伯数字c语言,阿拉伯数字转中文数字方法详解(C++实现)
阿拉伯数字与中文数字没有一一对应关系,不存在直接转换的公式化算法,因此需要根据两种数字体系的特点精心构造转换算法. 中文计数有一个特点,就是"零"的使用变化多端.阿拉伯数字中数字的 ...
- 阿拉伯数字转中文大(小)写的函数
<? //chinese_money.php //Changing Arab Money Num to Chinese Money Num /*====================== Fu ...
- 一个阿拉伯数字转中文数字的函数
最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的. 感觉到我的算法不错,所以贴出来共享一下如果要用于金额的转换,对小数部分的处理要做一下修改 < ...
最新文章
- 面试官:说说一条查询sql的执行流程和底层原理?
- 四年C++老炮,转攻Python实践分享
- oracle xtts 介绍,oracle_rman_xtts_v3
- 【c++版数据结构】之循环单链表的实现(带头结点以及尾节点)
- .NET开发者常会忽略的几个错误
- 华为怎么升级Android11,华为EMUI 11/安卓11升级名单曝光 快来看看你的手机是否支持...
- 计算机应用基础形成性考核作业,计算机应用基础形成性考核作业1
- 【clickhouse】未解决 ClickHouse exception, code: 1002 DB::Exception: Directory already exists
- for循环执行 mybatis_MyBatis 插件机制详解
- 剑指offer——面试题17:合并两个排序的链表
- VAV系统类毕业论文文献都有哪些?
- Admob激励视频广告(rewarded ad)的服务器端验证(server-side )的疑问
- 基于jQuery+cookie的视频断点续播
- 2019xman-shellmaster wp
- cs1.5最新服务器地址,CS1.5服务器连接常见问题解决
- sklearn cheat sheet
- empty 和 isset 的区别
- 9.DNS和DNSmasq服务
- 抓包工具 charles 在线破解方法,支持4.2.6版本
- 编写河北大学官网界面