numberUtils.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. const UNITS = ["", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千"];
  2. const NUMS = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
  3. /**
  4. * 数字转换成中文汉字
  5. * @param value 要转换的数字
  6. * @return 返回数字转后的汉字字符串
  7. */
  8. export const number2Chinese = (value) => {
  9. let result = ""; //转译结果
  10. for (let i = (value + "").length - 1; i >= 0; i--) {//String.valueOf(value) 转换成String型得到其长度 并排除个位,因为个位不需要单位
  11. let r = (value / Math.pow(10, i));//value / Math.pow(10, i) 截位匹配单位
  12. result += (NUMS[r % 10] || '') + UNITS[i];
  13. console.log(result)
  14. }
  15. // result = result.replace("零[十, 百, 千]", "零");//匹配字符串中的 "零[十, 百, 千]" 替换为 "零"
  16. // result = result.replace("零+", "零");//匹配字符串中的1或多个 "零" 替换为 "零"
  17. // result = result.replace("零([万, 亿])", "$1");
  18. // result = result.replace("亿万", "亿"); //亿万位拼接时发生的特殊情况
  19. if (result.startsWith("一十")) { //判断是否以 "一十" 开头 如果是截取第一个字符
  20. result = result.substring(1);
  21. }
  22. if (result.endsWith("零")) { //判断是否以 "零" 结尾 如果是截取除 "零" 外的字符
  23. result = result.substring(0, result.length() - 1);
  24. }
  25. return result;
  26. }