UNPKG

chinese-parseint2

Version:
1 lines 9.16 kB
{"version":3,"file":"index.umd.development.cjs","sources":["../src/data.ts","../src/index.ts"],"sourcesContent":["\nexport const characters = Object.freeze({\n\t\"\": 0, \"\": 0, \"\": 0, \"\": 0, \"\": 0,\n\t\"\": 1, \"\": 1, \"\": 1, \"\": 1, \"\": 1, \"\": 1,\n\t\"\": 2, \"\": 2, \"\": 2, \"\": 2, \"\": 2, \"\": 2, \"\": 2,\n\t\"\": 3, \"\": 3, \"\": 3, \"\": 3, \"\": 3, \"\": 3, \"\": 3,\n\t\"\": 4, \"\": 4, \"\": 4, \"\": 4, \"\": 4,\n\t\"\": 5, \"\": 5, \"\": 5,\n\t\"\": 6, \"\": 6, \"\": 6, \"\": 6,\n\t\"\": 7, \"\": 7, \"\": 7, \"\": 7,\n\t\"\": 8, \"\": 8, \"\": 8, \"\": 8,\n\t\"\": 9, \"\": 9, \"\": 9, \"\": 9,\n\t\"\": 10, \"\": 10, \"\": 10, \"\": 10,\n\t\"\": 100, \"\": 100,\n\t\"\": 1000, \"\": 1000,\n\t\"\": 20, \"廿\": 20,\n\t\"\": 30, \"\": 40, \"\": 200,\n\t\"\": 1e+4, \"\": 1e+4,\n\t\"\": 1e+8, \"亿\": 1e+8,\n\t\"\": 1e+12,\n\t\"\": 1e+16, \"\": 1e+16, \"\": 1e+16,\n\t\"\": 1e+20,\n\t\"\": 1e+24, \"\": 1e+24,\n\t\"\": 1e+28, \"\": 1e+28,\n\t\"\": 1e+32, \"\": 1e+32,\n\t\"\": 1e+36, \"\": 1e+36,\n\t\"\": 1e+40, \"\": 1e+44, \"\": 1e+48,\n} as const);\n","\nimport { characters } from './data';\nexport { characters } from './data';\n\nexport function _isNegative(str: string)\n{\n\treturn /^[負负-]/.test(str)\n}\n\nexport function isSpecialCharVal(char: string | keyof typeof characters): char is keyof typeof characters\n{\n\treturn typeof getSpecialCharVal(char) === 'number'\n}\n\nexport function getSpecialCharVal(char: string | keyof typeof characters)\n{\n\treturn characters[char as keyof typeof characters]\n}\n\nexport function chinese_parseInt(str: string, radix?: number)\n{\n\tconst result = parseInt(str, radix);\n\tif (!isNaN(result)) return result;\n\tif (typeof str !== \"string\") return NaN;\n\n\tstr = str.replace(/[\\s ]+/g, \"\");\n\n\treturn _chineseParseIntCore(str);\n}\n\nexport function _chineseParseIntCore(str: string)\n{\n\tconst negative = _isNegative(str);\n\tif (negative) str = str.slice(1);\n\n\tlet charVal: number;\n\tlet result = 0;\n\t/**\n\t * 不到一萬的部分\n\t */\n\tlet partialSum = 0; ///< 不到一萬的部分\n\t/**\n\t * 個位數,預設為 -1 以區分有無\"\"的出現\n\t */\n\tlet digit = -1;\n\n\tfor (let i = 0; i < str.length; ++i)\n\t{\n\t\tcharVal = getSpecialCharVal(str.charAt(i)); ///< 暫存字元代表的數值\n\t\tif (charVal === undefined) return NaN; // 有任何不認得的字,直接 NaN\n\t\tif (charVal < 10)\n\t\t{\n\t\t\tdigit = (digit == -1)\n\t\t\t\t? charVal\n\t\t\t\t: digit * 10 + charVal // ex. 零五、二五六萬\n\t\t\t;\n\t\t}\n\t\telse if (charVal < 1e+4)\n\t\t{\n\t\t\tif (digit == -1) digit = 1;\n\t\t\tif (i > 1 && digit == 0 && getSpecialCharVal(str.charAt(i - 2)) != 100)\n\t\t\t{\n\t\t\t\tdigit = 1;\n\t\t\t} // 處理\"一千零十一\";搜尋\"千零十\"的確是出現過的。\n\t\t\tpartialSum += digit * charVal;\n\t\t\tdigit = -1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (digit != -1) partialSum += digit;\n\t\t\tif (i && getSpecialCharVal(str.charAt(i - 1)) >= 1e+4) // 為了\"四萬萬五千萬\"\n\t\t\t{\n\t\t\t\tresult *= getSpecialCharVal(str.charAt(i));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult += partialSum * charVal;\n\t\t\t}\n\t\t\tpartialSum = 0;\n\t\t\tdigit = -1;\n\t\t}\n\t}\n\tif (digit > 0)\n\t{\n\t\tif (str.length > 1)\n\t\t{\n\t\t\t// 為了處理\"二十四萬二\"\"二百五\"\n\t\t\tcharVal = getSpecialCharVal(str.charAt(str.length - 2));\n\t\t\tif (charVal < 100)\n\t\t\t{\n\t\t\t\tpartialSum += digit;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcharVal /= charVal.toString().charAt(0) as any; // 把「皕」轉成100\n\t\t\t\tpartialSum += digit * (charVal / 10);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpartialSum += digit;\n\t\t}\n\t}\n\tresult += partialSum;\n\n\tif (negative) result *= -1;\n\n\treturn result;\n}\n\nexport default chinese_parseInt\n"],"names":["characters","Object","freeze","_isNegative","str","test","isSpecialCharVal","char","getSpecialCharVal","chinese_parseInt","radix","result","parseInt","isNaN","NaN","replace","_chineseParseIntCore","negative","slice","charVal","partialSum","digit","i","length","charAt","undefined","toString"],"mappings":"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"}