前言:
在js中把数字转换成汉字输出的方法,直接可以拿来用
方法一:支持7位,也就是最大1234567
案例:this.toChinesNum(10101010) 得到 "一千零一十万一千零一十"
/*** 数字转成汉字* @params num === 要转换的数字* @return 汉字* */toChinesNum(num) {let changeNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']let unit = ['', '十', '百', '千', '万']num = parseInt(num)let getWan = (temp) => {let strArr = temp.toString().split('').reverse()let newNum = ''let newArr = []strArr.forEach((item, index) => {newArr.unshift(item === '0' ? changeNum[item] : changeNum[item] + unit[index])})let numArr = []newArr.forEach((m, n) => {if (m !== '零') numArr.push(n)})if (newArr.length > 1) {newArr.forEach((m, n) => {if (newArr[newArr.length - 1] === '零') {if (n <= numArr[numArr.length - 1]) {newNum += m}} else {newNum += m}})} else {newNum = newArr[0]}return newNum}let overWan = Math.floor(num / 10000)let noWan = num % 10000if (noWan.toString().length < 4) {noWan = '0' + noWan}return overWan ? getWan(overWan) + '万' + getWan(noWan) : getWan(num)}
调用: let a = this.toChinesNum(1) 这里的a拿到的值就是一
方法二:支持9位以上也就是亿级别的,如果需要钱的那种单位,把注释放开就行
toChineseBig(num) {// 将接收到的num转换为字符串var strNum = String(num)// 定义单位// var unit = ['拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟']var unit = ['十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千']// 结果中放一个符号,用来解决最后的零去不掉的问题var result = ['@']// 单位下标var unitNo = 0// 从后往前遍历接收到的数据,省略结束条件for (let i = strNum.length - 1;; i--) {// 调用转大写函数,将每一个数字转换成中文大写,一次放入一个到结果数组中result.unshift(numToChinese(strNum[i]))// 如果不大于0if (i <= 0) {// 结束循环break}// 放入一个数字,放入一个单位result.unshift(unit[unitNo])// 单位下标加1unitNo++}// 将结果数组转换成字符串,并使用正则替换一些关键位置,让结果符合语法// return result.join('').replace(/(零[仟佰拾]){1,3}/g, '零').replace(/零{2,}/g, '零').replace(/零([万亿])/g, '$1').replace(/亿万/g, '亿').replace(/零*@/g, '')return result.join('').replace(/(零[千百十]){1,3}/g, '零').replace(/零{2,}/g, '零').replace(/零([万亿])/g, '$1').replace(/亿万/g, '亿').replace(/零*@/g, '')function numToChinese(n) {// var chineseBigNum = '零壹贰叁肆伍陆柒捌玖'var chineseBigNum = '零一二三四五六七八九'return chineseBigNum[n]}}}
调用: let a = this.toChineseBig(112345111111) 这里的a拿到的值就是 一千一百二十三亿四千五百一十一万一千一百一十一
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!