将数字转换为大写金额

ゝ一世哀愁。 2023-02-23 12:16 94阅读 0赞
  1. export const changeToChinese = (Num) => {
  2. //判断如果传递进来的不是字符的话转换为字符
  3. if (typeof Num == "number") {
  4. Num = new String(Num);
  5. };
  6. Num = Num.replace(/,/g, "") //替换tomoney()中的“,”
  7. Num = Num.replace(/ /g, "") //替换tomoney()中的空格
  8. Num = Num.replace(/¥/g, "") //替换掉可能出现的¥字符
  9. if (isNaN(Num)) { //验证输入的字符是否为数字
  10. //alert("请检查小写金额是否正确");
  11. return "";
  12. };
  13. //字符处理完毕后开始转换,采用前后两部分分别转换
  14. var part = String(Num).split(".");
  15. var newchar = "";
  16. //小数点前进行转化
  17. for (var i = part[0].length - 1; i >= 0; i--) {
  18. if (part[0].length > 10) {
  19. return "";
  20. //若数量超过拾亿单位,提示
  21. }
  22. var tmpnewchar = ""
  23. var perchar = part[0].charAt(i);
  24. switch (perchar) {
  25. case "0":
  26. tmpnewchar = "零" + tmpnewchar;
  27. break;
  28. case "1":
  29. tmpnewchar = "壹" + tmpnewchar;
  30. break;
  31. case "2":
  32. tmpnewchar = "贰" + tmpnewchar;
  33. break;
  34. case "3":
  35. tmpnewchar = "叁" + tmpnewchar;
  36. break;
  37. case "4":
  38. tmpnewchar = "肆" + tmpnewchar;
  39. break;
  40. case "5":
  41. tmpnewchar = "伍" + tmpnewchar;
  42. break;
  43. case "6":
  44. tmpnewchar = "陆" + tmpnewchar;
  45. break;
  46. case "7":
  47. tmpnewchar = "柒" + tmpnewchar;
  48. break;
  49. case "8":
  50. tmpnewchar = "捌" + tmpnewchar;
  51. break;
  52. case "9":
  53. tmpnewchar = "玖" + tmpnewchar;
  54. break;
  55. }
  56. switch (part[0].length - i - 1) {
  57. case 0:
  58. tmpnewchar = tmpnewchar + "元";
  59. break;
  60. case 1:
  61. if (perchar != 0) tmpnewchar = tmpnewchar + "拾";
  62. break;
  63. case 2:
  64. if (perchar != 0) tmpnewchar = tmpnewchar + "佰";
  65. break;
  66. case 3:
  67. if (perchar != 0) tmpnewchar = tmpnewchar + "仟";
  68. break;
  69. case 4:
  70. tmpnewchar = tmpnewchar + "万";
  71. break;
  72. case 5:
  73. if (perchar != 0) tmpnewchar = tmpnewchar + "拾";
  74. break;
  75. case 6:
  76. if (perchar != 0) tmpnewchar = tmpnewchar + "佰";
  77. break;
  78. case 7:
  79. if (perchar != 0) tmpnewchar = tmpnewchar + "仟";
  80. break;
  81. case 8:
  82. tmpnewchar = tmpnewchar + "亿";
  83. break;
  84. case 9:
  85. tmpnewchar = tmpnewchar + "拾";
  86. break;
  87. }
  88. var newchar = tmpnewchar + newchar;
  89. }
  90. //小数点之后进行转化
  91. if (Num.indexOf(".") != -1) {
  92. if (part[1].length > 2) {
  93. // alert("小数点之后只能保留两位,系统将自动截断");
  94. part[1] = part[1].substr(0, 2)
  95. }
  96. for (i = 0; i < part[1].length; i++) {
  97. tmpnewchar = ""
  98. perchar = part[1].charAt(i)
  99. switch (perchar) {
  100. case "0":
  101. tmpnewchar = "零" + tmpnewchar;
  102. break;
  103. case "1":
  104. tmpnewchar = "壹" + tmpnewchar;
  105. break;
  106. case "2":
  107. tmpnewchar = "贰" + tmpnewchar;
  108. break;
  109. case "3":
  110. tmpnewchar = "叁" + tmpnewchar;
  111. break;
  112. case "4":
  113. tmpnewchar = "肆" + tmpnewchar;
  114. break;
  115. case "5":
  116. tmpnewchar = "伍" + tmpnewchar;
  117. break;
  118. case "6":
  119. tmpnewchar = "陆" + tmpnewchar;
  120. break;
  121. case "7":
  122. tmpnewchar = "柒" + tmpnewchar;
  123. break;
  124. case "8":
  125. tmpnewchar = "捌" + tmpnewchar;
  126. break;
  127. case "9":
  128. tmpnewchar = "玖" + tmpnewchar;
  129. break;
  130. }
  131. if (i == 0) tmpnewchar = tmpnewchar + "角";
  132. if (i == 1) tmpnewchar = tmpnewchar + "分";
  133. newchar = newchar + tmpnewchar;
  134. }
  135. }
  136. //替换所有无用汉字
  137. while (newchar.search("零零") != -1)
  138. newchar = newchar.replace("零零", "零");
  139. newchar = newchar.replace("零亿", "亿");
  140. newchar = newchar.replace("亿万", "亿");
  141. newchar = newchar.replace("零万", "万");
  142. newchar = newchar.replace("零元", "元");
  143. newchar = newchar.replace("零角", "");
  144. newchar = newchar.replace("零分", "");
  145. if (newchar.charAt(newchar.length - 1) == "元") {
  146. newchar = newchar + "整"
  147. }
  148. return newchar;
  149. }

发表评论

表情:
评论列表 (有 0 条评论,94人围观)

还没有评论,来说两句吧...

相关阅读