# 中文转数字

// 在中文页面解析、中文数据处理中,常常遇到用中文表示的数字,例如:五千三百万零五百零一。
// 我们一般需要把它转化成int型整数,进行实际存储和使用。 请完成一亿(不含)以内的中文数字到int整数的转换
const enumObj = {
  : 1,
  : 2,
  : 3,
  : 4,
  : 5,
  : 6,
  : 7,
  : 8,
  : 9,
};

function transform(numStr) {
  // 五 千 三 百 万 零 五 百 零 一
  const numStrArr = numStr.split("");

  let num = 0;
  let d = 1;
  let isWan = false;

  for (let i = numStrArr.length; i >= 0; i--) {
    const key = numStrArr[i];
    const val = enumObj[key];

    if (val) {
      num += val * d;
    } else if (key === "零") {
    } else if (key === "百") {
      if (isWan) {
        d = 1000000;
      } else {
        d = 100;
      }
    } else if (key === "万") {
      isWan = true;
    } else if (key === "千") {
      if (isWan) {
        d = 10000000;
      } else {
        d = 1000;
      }
    }
  }

  return num;
}

console.log(transform("五千三百万零五百零一"));
console.log(transform("四千三百万三千五百零九"));
console.log(transform("四百万一千零九"));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Last Updated: 6/27/2023, 7:40:45 PM