// 数字转成大小写
const toChineseNumber = (num:number) => {
// 四位四位的进行分割
const parts = num
.toString()
.replace(/(?=(\d{4})+$)/g, ',')
.split(',')
.filter(Boolean)
const map = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
const units = ['', '十', '百', '千']
// 把连续的零给去掉 合并为1个零 当零在末尾的时候去掉
function _handleZero(str) {
return str.replace(/零+/g, '零').replace(/零$/, '')
}
function _transform(n) {
let result = ''
for (let i = 0; i < n.length; i++) {
const c = map[n[i]]
let u = units[n.length - i - 1]
if (c === '零') {
u = ''
}
result += c + u
}
result = _handleZero(result)
return result
}
const bigUnits = ['', '万', '亿']
let result = ''
for (let i = 0; i < parts.length; i++) {
const p = parts[i]
const c = _transform(p)
const u = bigUnits[parts.length - i - 1]
if (c === '') {
result += '零'
continue
}
result += c + u
}
result = _handleZero(result)
return result
}