将阿拉伯数字转为中文(比如12345为一万二千三百四十五)
以下是10亿以内的阿拉伯数字转文字
效果如下图
话不多说上代码
html代码
<input id="num" value="">
<div id="str"></div>
js代码
let units = ['','','十','百','千','万','十万','百万','千万','亿']
let nums = ['零','一','二','三','四','五','六','七','八','九']
let gainEle = document.getElementById('num')
gainEle.onchange = ((ele) => {
if(ele.target.value.length < 10){
lei(ele.target.value)
}else{
document.getElementById('str').innerText = '超过了10亿,无法转化'
}
})
function lei(gainStr){
let gainArr = gainStr.split('')
let result = gainArr.reduce((pre,cur,index) => {
if(nums[cur] != '零'){
return (pre.push((() => {
return `${nums[cur]}${units[gainStr.slice(index).length]}`
})()),pre)
}else{
if(pre[pre.length-1] != '零'){
return (pre.push('零'),pre)
}else{
return pre
}
}
},[])
if(result.join('').indexOf('万') != result.join('').lastIndexOf('万')){
let one = result.join('').slice(0,result.join('').lastIndexOf('万')).split('万').join('')
let two = result.join('').slice(result.join('').lastIndexOf('万'))
document.getElementById('str').innerText = one + two
}else{
document.getElementById('str').innerText = result.join('')
}
}
差不多就这样了,有更好的欢迎交流