最近在项目中用到要将阿拉伯数字转为中文的需求
function numberToChinese(){
var chnNumChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
var chnUnitChar = ['', '十', '百', '千']
var strIns = ''
var chnStr = ''
var unitPos = 0
var zero = true
while (num > 0) {
var v = num % 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++
num = Math.floor(num / 10)
}
return chnStr
}
但是在使用中发现10-19会转换成‘一十’,‘一十一’这种情况,这当然不是我们想要的
所以对于字符串做判断替换
if (chnStr[0] === '一' && chnStr[1] === '十') {
chnStr = chnStr.replace('一十', '十')
}
最终代码为:
function numberToChinese(){
var chnNumChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
var chnUnitChar = ['', '十', '百', '千']
var strIns = ''
var chnStr = ''
var unitPos = 0
var zero = true
while (num > 0) {
var v = num % 10
if (v === 0) {
if (!zero) {
zero = true
chnStr = chnNumChar[v] + chnStr
}
} else {
zero = false
strIns = chnNumChar[v]
strIns += chnUnitChar[unitPos]
chnStr = strIns + chnStr
if (chnStr[0] === '一' && chnStr[1] === '十') {
chnStr = chnStr.replace('一十', '十')
}
}
unitPos++
num = Math.floor(num / 10)
}
return chnStr
}