js实现数字小写转大写

来源:网络 文章列表 2023-04-17 136
js实现数字小写转大写的函数

有时候业务需要做大写【一二三四五六七八九十】的标题,那对于js普通的数据结构排序是按【0123456789】。所以我们需要做一些数字的转换,实现小写转大写才能满足业务需求。

js实现数字转大写

  1. //阿拉伯数字转大写,整数转大写
  2. const numToCapital = (num, type = '') => {
  3. if (!num) return 0
  4. const strNum = Number((num + '').replace(/[,,]*/g, '')) + '' // 记录字符
  5. num = parseInt(Number(strNum)) // 转为整数,
  6. let capitalAr = '零一二三四五六七八九十'
  7. let unitAr = ['十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千']
  8. if (type) {
  9. capitalAr = '零壹贰叁肆伍陆柒捌玖拾'
  10. unitAr = ['拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟'] // 单位
  11. }
  12. const resultAr = [] // 记录结果,后边json.in就可
  13. let index = strNum.length - 1 //记录位数
  14. let idx = 0 // 记录单位
  15. let percent = 10
  16. const turnNum = (num, percent, index) => {
  17. const unit = num / percent
  18. const capital = capitalAr[Number(strNum[index])]
  19. if (unit < 1) {
  20. resultAr.push(capital)
  21. // 出现11【一十一】这种情况
  22. if (Number(strNum[index]) === 1 && (strNum.length === 2 || strNum.length === 6 || strNum.length === 10)) {
  23. resultAr.pop()
  24. }
  25. return false //结束递归
  26. } else {
  27. if (capital === '零') {
  28. // 万和亿单位不删除
  29. if (!['万', '亿'].includes(resultAr[resultAr.length - 1])) {
  30. resultAr.pop()
  31. }
  32. // 前面有零在删掉一个零
  33. if (resultAr[resultAr.length - 1] === '零') {
  34. resultAr.pop()
  35. }
  36. }
  37. resultAr.push(capital)
  38. // 过滤存在【零万】【零亿】这种情况
  39. if (['万', '亿'].includes(resultAr[resultAr.length - 2]) && capital === '零') {
  40. resultAr.pop()
  41. }
  42. // 过滤【1亿万】这种情况
  43. if (resultAr[0] === '万' && resultAr[1] === '亿') {
  44. resultAr.shift()
  45. }
  46. // 末尾【零】删掉
  47. if (resultAr[0] === '零') {
  48. resultAr.pop()
  49. }
  50. resultAr.push(unitAr[idx++])
  51. turnNum(num, percent * 10, --index)
  52. }
  53. }
  54. turnNum(num, percent, index)
  55. return resultAr.reverse().join('')
  56. }
  57. // console.log(numToCapital(1512345672, 'capital'))
  58. // 壹拾伍亿壹仟贰佰叁拾肆万伍仟陆佰柒拾贰
  59. console.log(numToCapital('125,0000,0000'))
  60. //一百二十五亿
  61. console.log(numToCapital('10,0000'))
  62. //十万
  63. console.log(numToCapital('12,0000'))
  64. //十二万
  65. console.log(numToCapital('10,0010'))
  66. //十万零一十
  67. console.log(numToCapital('100,1000', true))
  68. //壹佰万壹仟
  69. console.log(numToCapital('0010'))
  70. //十

 

腾讯云限量秒杀

1核2G 5M 50元/年 2核4G 8M 74元/年 4核8G 5M 818元/年 CDN流量包 100GB 9元

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:QQ:1292237044
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论