阿拉伯数字转中文数字----粗糙版

var nums = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];

function numToChina(num) {
  var unit = ['十', '百', '千','万'];
  var numToString = num.toString();
  var numLen = numToString.length;
  var numArr = numToString.split('');
  var result = ''

  if (numLen == 1) {
    result =  nums[num]
  } else if (numLen == 2 && num < 20) {
    if(numArr[1] == 0) {
      result =  '十'
    }
    result =  '十' + nums[Number(numArr[1])] //个位数
  } else if (numLen == 2 && num >= 20 && num < 100) {
    if (numArr[1] == 0) {
      result =  nums[numArr[0]] + '十'
    } else {
      result =  nums[numArr[0]] + '十' + nums[numArr[1]]
    }
  } else if (numLen == 3) {
    if (numArr[1] == 0 && numArr[2] == 0) {
      result =  nums[numArr[0]] + '百'
    } else if(numArr[1] != 0 && numArr[2] == 0) {
      result =  nums[numArr[0]] + '百' + nums[numArr[1]] + '十'
    } else {
      result =  clearZero(numArr[0] , '百') + clearZero(numArr[1] , '十') + nums[numArr[2]]
      
    }
  } else if (numLen == 4) {
    if (numArr[1] == 0 && numArr[2] == 0 && numArr[3] == 0) {
      result =  nums[numArr[0]] + '千'
    } 
    else if(numArr[1] != 0 && numArr[2] == 0 && numArr[3] == 0) {
      result =  nums[numArr[0]] + '千' + nums[numArr[1]] + '百'
    } 
    else if(numArr[1] != 0 && numArr[2] != 0 && numArr[3] == 0) {
      result =  nums[numArr[0]] + '千' + nums[numArr[1]] + '百' + nums[numArr[2]] + '十'
    }      
    else {
      result =  clearZero([numArr[0]] , '千') + clearZero([numArr[1]] , '百') + clearZero([numArr[2]] , '十') +  clearZero([numArr[3]] , '')
    }
  }
   return deleteOtherZero(result)

}
//去除不必要的零,比如十位数为0,则整个十位数都为零,把单位也省了
function clearZero(val, str) {
  if(val == 0) {
    if(str === '') {
      return ''
    }else {
      return '零'
    }
    
  }else {
    return nums[val] + str
  }
}
//去除多余的零
function deleteOtherZero(val) {
  var flag = /零零/g.test(val);
  if(flag) {
    return val.replace(/零零/g, '零')
  }else {
    return val
  }
}
console.log(numToChina(1020)) 

 

posted @ 2018-03-03 11:53  巫瞅瞅  阅读(264)  评论(0编辑  收藏  举报