1、1转为一
2、1转壹
3、100000000转一亿
4、100000000转壹亿
代码如下:
/**
* chineseConvert.js
* 数字转换
*/
export function chineseToFT(num) {
const chineseNum = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖','拾']
return chineseNum[num]
}
export function chineseToZH(num) {
const chineseNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九','十']
return chineseNum[num]
}
//一串数字转换为中文数字阅读一万三千 类似这种
export function chineseStrToConvert(num){
const chineseNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
const units = ['','十','百','千']
const parts = num.toString().replace(/(?=(\d{4})+$)/g, ',').split(',').filter(Boolean)
console.log( parts )
//连续的0 转为一个0
function _handleZero( str ){
//连续多个零 替换成一个零
str = str.replace(/零+/g,'零')
//零在末尾去掉零
str = str.replace(/零+$/,'')
return str
}
function _transform( str ){
let result = ''
for( let i = 0; i < str.length; i++ ){
let c = chineseNum[str[i]];
let u = units[ str.length - i -1 ]
if( c === '零' ){ //为0 不需要单位
u = ''
}
result += c + u;
}
result = _handleZero( result )
return result
}
let bigUnits = ['','万','亿']
let res = ''
for (var i = 0; i < parts.length; i++) {
let c = _transform( parts[i] );
let u = bigUnits[ parts.length - i - 1 ];
//100 0000 1111 这种 0000 _transform 去掉所有0 了,这里需要判断是否是空的,如果是空的,需要补一个零
//出现连续的0 _transform 中已经全部给替换了。这里需要判断c是否是替换了掉了 为空了,所以要补一个,然后去掉单位
if( c === ''){
c = '零',
u = ''
}
res += c + u;
}
//出现 1000 0000 0000 这种 0000 _transform 去掉所有0 了,上面补了零 但是如果是末尾的0 补位了就会是 1千亿 00 所以去掉后面的0
res = _handleZero( res )
return res
}
//转为繁体
export function chineseStrToConvertFT( num ){
let res = chineseStrToConvert( num );
let ft = new Map()
ft.set('零','零')
ft.set('一','壹')
ft.set('二','贰')
ft.set('三','叁')
ft.set('四','肆')
ft.set('五','伍')
ft.set('六','陆')
ft.set('七','柒')
ft.set('八','捌')
ft.set('九','玖')
ft.set('十','拾')
ft.set('百','佰')
ft.set('千','仟')
ft.set('万','萬')
ft.set('亿','億')
let resFT = ''
for(let i = 0 ; i < res.length ; i++){
resFT += ft.get(res[i])
}
return resFT
}