JavaScript实现数字金额小写转大写

function numToText(number) {
  let AA = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖')
  let BB = new Array('', '拾', '佰', '仟', '萬', '亿')
  let reverseStr = number.split('').reverse().join('')
  let result = ''
  let unit = 0
  reverseStr.replace(/\d{1,4}/g, function ($1) {
    if (unit !== 0) {
      if (unit%2 !== 0) {
        $1 = BB[4] + $1
      } else {
        $1 = BB[5] + $1
      }
    }
    $1 = $1.replace(/\d/g, function (x1, idx) {
      if (x1 !== '0') {
        let idx1 = (unit > 0) ? (idx-1) : idx
        return (BB[idx1] + AA[x1])
      } else {
        return AA[x1]
      }
    })
    result += $1
    unit += 1
  })
  result = result.replace(/[零]{2,}/g, function (x1) {
    return '零'
  }).split('').reverse().join('')

  result = result.replace(/(零仟)|(零拾)/g, function (x1) {
    return ''
  }).replace(/(零亿)|(零亿零萬)/g, function (x1) {
    return '亿'
  }).replace(/(零萬)/g, function (x1) {
    return '萬'
  }).replace(/零$/, function (x1) {
    return ''
  })

  result += '元整'
  return result
} 

运行结果:

let number = ‘123456009011’
console.log(numToText(number)) // 壹仟贰佰叁拾肆亿伍仟陆佰萬玖仟零壹拾壹元整


let number = ‘123456789’
console.log(numToText(number)) // 壹亿贰仟叁佰肆拾伍萬陆仟柒佰捌拾玖元整

发布了27 篇原创文章 · 获赞 4 · 访问量 6291

猜你喜欢

转载自blog.csdn.net/studentenglish/article/details/94645414