JS 中文数转数字练习
代码
let numMap: any = {'一': 1,'二': 2,'两': 2,'三': 3,'四': 4,'五': 5,'六': 6,'七': 7,'八': 8,'九': 9,'零': 0,
}
let unitMap: any = {'十': 10,'百': 100,'千': 1000,'万': 10000,'亿': 100000000,
}
function zhToNum(testString:string) {let num = 0; // 结果let beforeUnit = Infinity;// 如果字符串长度为1则直接使用map// 循环字符串for (let i = 0; i < testString.length; i++) {const char = testString[i]; // 第一个获取的一定是数字let tmpNum = numMap[char]; // 数字let unitSum = 1; // 单位的乘积 eg:'千万' => 1000*10000if (i == testString.length - 1) { // 说明最后一个数字没有单位if(testString[i-1] == '零'){unitSum = 1;}else{unitSum = beforeUnit / 10; // 之前是“万”就加上“千”,千=>百...,考虑'三千二','两千一'的情况}}while (unitMap[testString[i + 1]]) { // 循环找数字之后的单位字符,并相乘,eg:'千万' => 1000*10000unitSum *= unitMap[testString[++i]]}if (beforeUnit > unitSum) { // 判断之前的单位,beforeUnit = unitSumtmpNum *= unitSum;num += tmpNum;} else { //此时单位比之前的单位大, 主要考虑到'三百一十"万"三百一十'的情况,此时的万的计算方式为数字与单位相乘beforeUnit = Infinity; // 重置前一个单位num += tmpNum;num *= unitSum;}}return num;
}
console.log('一千三百二十一:',zhToNum('一千三百二十一'));
console.log('一千三百二十一万一千三百二十一:',zhToNum('一千三百二十一万一千三百二十一'));
console.log('一千万三百零一:',zhToNum('一千万三百零一'));
console.log('一亿五千万三百:',zhToNum('一亿五千万三百'));
console.log('三万两千一:',zhToNum('三万两千一'));
基本思路
数字*单位 + 数字*单位
特殊处理
'一千三百二十一万一千三百二十一',中间的”万“处理和上面所述整体思路不一样,需要判断该单位之前的单位是否比它小
- 小的话,就应该在计算了1320数字后先加1,再乘以10000。而不是原来的相加
- 大的话说明和原来一样,数字*单位 + 数字*单位
"四千三","三万二",最后一位不带单位时要补最近的单位
'二千零一',若最后一位没有单位时,若倒数第二位为‘零’,则补上单位1
自己做的练习,若有错误,敬请指出。
JS 中文数转数字练习相关推荐
- js将阿拉伯数字转换成中文的大写数字
js将阿拉伯数字转换成中文的大写数字 export const numberToChinese = (num) => {var AA = new Array("零", &qu ...
- 中文数藏与CIC国信公链等有关机构顺利召开国内数字藏品规划标准研讨会
构建标准化合规化机制 推动数字藏品行业健康有序发展 2022年5月15日,由CIC国信公链数字出版链主办,中文数藏平台.中国新闻出版研究院数字出版研究所.横琴数链数字金融研究院.中国民营科技实业家协会 ...
- js将阿拉伯数字翻译成中文的大写数字
// 将阿拉伯数字翻译成中文的大写数字 export const numberToChinese = (num) => { var AA = new Array("零" ...
- JS if 水仙花数 游乐园门票计算 闰年 三元运算符 for循环 算法 穷举法 While 拔萝卜 等差数 随机数函数random 区间数 猜数字
算法题 水仙花数 数学方法 字符串方法 游乐园门票计算 Switch 闰年 <body> <script>var month = Number(promp ...
- php 判断只能是数字和字母,PHP_JS只能输入数字或数字和字母等的正则表达式,JS判断只能是数字和小数点 0. - phpStudy...
JS只能输入数字或数字和字母等的正则表达式 JS判断只能是数字和小数点 0.不能输入中文 1) 2) function chkIt(frm){ if (frm.n1.value.length>0 ...
- js判断只能输入数字或小数点
JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input οnkeyup="this.value=this.value.replace(/\D/g,'' ...
- js中文首字母排序(二)
前面写了一篇 js中文首字母排序(一) 链接:http://www.alexpers.com/opuscule/chineseSort/sort.html 文章主要是应用过来js的两个方法,sort( ...
- js 字符串转化成数字
js 字符串转化成数字 的 三种方法主要有 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换 ...
- Js判断是否为数字,是否为空,是否为整形,是否为浮点型,是否为对象
Js判断是否为数字,是否为空,是否为整形,是否为浮点型,是否为对象 /**********************一.验证类*****************************/ //对象是否 ...
最新文章
- 概率论中指数分布介绍及C++11中std::exponential_distribution的使用
- HDU 3555 Bomb
- 比较两个二维数组是否相等
- linux源码安装php缺少动态库,php源代码安装常见错误解决办法
- emctl start dbconsole OC4J_dbconsole*** not found
- pythonpygame中主函数_从0开始学Python-14.2 pygame的核心对象
- 对于原始轨迹的噪声过滤方法和曲率计算方法
- 脚本文件不变色_LoadRunner脚本开发
- VS Winform开发实践纪要
- 2021年最新Java学习路线图指南
- #PLC_一次看懂数位低通滤波器设计(含代码实现)
- 游戏引擎 Unity 的入门易精通难体现在哪?为什么?
- mkv转换mp4格式,mkv格式转mp4
- H3C交换机WEB管理时间_H3C 交换机之VLAN配置与VLAN间访问
- 一种测试方法论RST(非广告)
- SpringCloudAlibaba之Nacos
- 算法精解----11、开地址哈希表
- [C++]派(二分算法)
- html项目符号正方形,HTML无序列表| HTML项目符号列表
- 实现一个方法,给定一个输入字符串,能够删除所有连续同样字母(大小写不敏感)。例如,输入为ABBCCCCCBBAB,输出就是 ABCBAB
热门文章
- 尚硅谷网上书城项目概要
- cad模型轻量化_保持外观的CAD模型轻量化技术
- 与愚人节有关的无聊事——QQ伪装
- Linux 下分区表的备份与恢复
- wps中图片怎么居中_wps2010里插入图片如何使图片居中啊!
- 年薪100万都是什么样人才啊?
- 计算机二级WPS 选择题(模拟和解析八)
- 使用计算机自适应测验大型测验,四年级数学成就计算机自适应测验(CAT)的初步编制...
- 土巴兔上市再折戟,互联网家装没故事
- 2021WSB-day1-2-Ajay Kumar介绍Less Constrained下的非接触性掌纹识别