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 
}