js中把数字转换成汉字输出
前⾔:
在js中把数字转换成汉字输出的⽅法,直接可以拿来⽤
⽅法⼀:⽀持7位,也就是最⼤1234567
案例:ChinesNum(10101010) 得到 "⼀千零⼀⼗万⼀千零⼀⼗"
/**
* 数字转成汉字
* @params num === 要转换的数字
* @return 汉字
* */
toChinesNum(num) {
let changeNum = ['零', '⼀', '⼆', '三', '四', '五', '六', '七', '⼋', '九']
let unit = ['', '⼗', '百', '千', '万']
num = parseInt(num)
let getWan = (temp) => {
let strArr = String().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)
js 正则替换let noWan = num % 10000
if (String().length < 4) {
noWan = '0' + noWan
}
return overWan ? getWan(overWan) + '万' + getWan(noWan) : getWan(num)
}
调⽤: let a = ChinesNum(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]))
// 如果不⼤于0
if (i <= 0) {
// 结束循环
break
}
// 放⼊⼀个数字,放⼊⼀个单位
result.unshift(unit[unitNo])
// 单位下标加1
unitNo++
}
// 将结果数组转换成字符串,并使⽤正则替换⼀些关键位置,让结果符合语法
// 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 = ChineseBig(112345111111) 这⾥的a拿到的值就是⼀千⼀百⼆⼗三亿四千五百⼀⼗⼀万⼀千⼀百⼀⼗⼀
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论