numberDigit

一个把中文数字转换成整数数值的函数

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/450829/1164707/numberDigit.js

  1. //来自红烧鱼i https://blog.csdn.net/q1424966670/article/details/118338460
  2. var map = {
  3. "〇": 0,
  4. "零": 0,
  5. "一": 1,
  6. "壹": 1,
  7. "二": 2,
  8. "贰": 2,
  9. "两": 2,
  10. "三": 3,
  11. "叁": 3,
  12. "四": 4,
  13. "肆": 4,
  14. "五": 5,
  15. "伍": 5,
  16. "六": 6,
  17. "陆": 6,
  18. "七": 7,
  19. "柒": 7,
  20. "八": 8,
  21. "捌": 8,
  22. "九": 9,
  23. "玖": 9,
  24. "十": 10,
  25. "拾": 10,
  26. "百": 100,
  27. "佰": 100,
  28. "千": 1000,
  29. "仟": 1000,
  30. "万": 10000,
  31. "十万": 100000,
  32. "百万": 1000000,
  33. "千万": 10000000,
  34. "亿": 100000000
  35. };
  36. // 解析失败返回-1,成功返回转换后的数字,不支持负数
  37. function numberDigit(chinese_number) {
  38. var len = chinese_number.length;
  39. if (len == 0) return -1;
  40. if (len == 1) return (map[chinese_number] <= 10) ? map[chinese_number] : -1;
  41. var summary = 0;
  42. if (map[chinese_number[0]] == 10) {
  43. chinese_number = "一" + chinese_number;
  44. len++;
  45. }
  46. if (len >= 3 && map[chinese_number[len - 1]] < 10) {
  47. var last_second_num = map[chinese_number[len - 2]];
  48. if (last_second_num == 100 || last_second_num == 1000 || last_second_num == 10000 || last_second_num == 100000000) {
  49. for (var key in map) {
  50. if (map[key] == last_second_num / 10) {
  51. chinese_number += key;
  52. len += key.length;
  53. break;
  54. }
  55. }
  56. }
  57. }
  58. if (chinese_number.match(/亿/g) && chinese_number.match(/亿/g).length > 1) return -1;
  59. var splited = chinese_number.split("亿");
  60. var rest;
  61. if (splited.length == 2) {
  62. rest = splited[1] == "" ? 0 : numberDigit(splited[1]);
  63. return summary + numberDigit(splited[0]) * 100000000 + rest;
  64. }
  65. splited = chinese_number.split("万");
  66. if (splited.length == 2) {
  67. rest = splited[1] == "" ? 0 : numberDigit(splited[1]);
  68. return summary + numberDigit(splited[0]) * 10000 + rest;
  69. }
  70. var i = 0;
  71. while (i < len) {
  72. var first_char_num = map[chinese_number[i]];
  73. var second_char_num = map[chinese_number[i + 1]];
  74. if (second_char_num > 9) summary += first_char_num * second_char_num;
  75. i++;
  76. if (i == len) summary += first_char_num <= 9 ? first_char_num : 0;
  77. }
  78. return summary;
  79. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址