chinese-parseint2
Version:
parse Chinese numeric strings to integer
127 lines (119 loc) • 2.49 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: !0
});
const e = Object.freeze({
"0": 0,
零: 0,
"○": 0,
〇: 0,
洞: 0,
"1": 1,
一: 1,
壹: 1,
ㄧ: 1,
弌: 1,
么: 1,
"2": 2,
二: 2,
貳: 2,
贰: 2,
弍: 2,
兩: 2,
两: 2,
"3": 3,
三: 3,
參: 3,
叁: 3,
弎: 3,
参: 3,
叄: 3,
"4": 4,
四: 4,
肆: 4,
䦉: 4,
刀: 4,
"5": 5,
五: 5,
伍: 5,
"6": 6,
六: 6,
陸: 6,
陆: 6,
"7": 7,
七: 7,
柒: 7,
拐: 7,
"8": 8,
八: 8,
捌: 8,
杯: 8,
"9": 9,
九: 9,
玖: 9,
勾: 9,
十: 10,
拾: 10,
什: 10,
呀: 10,
百: 100,
佰: 100,
千: 1000,
仟: 1000,
念: 20,
廿: 20,
卅: 30,
卌: 40,
皕: 200,
萬: 1e+4,
万: 1e+4,
億: 1e+8,
亿: 1e+8,
兆: 1e+12,
京: 1e+16,
經: 1e+16,
经: 1e+16,
垓: 1e+20,
秭: 1e+24,
杼: 1e+24,
穰: 1e+28,
壤: 1e+28,
溝: 1e+32,
沟: 1e+32,
澗: 1e+36,
涧: 1e+36,
正: 1e+40,
載: 1e+44,
極: 1e+48
});
function _isNegative(e) {
return /^[負负-]/.test(e);
}
function getSpecialCharVal(t) {
return e[t];
}
function chinese_parseInt(e, t) {
const r = parseInt(e, t);
return isNaN(r) ? "string" != typeof e ? NaN : _chineseParseIntCore(e = e.replace(/[\s ]+/g, "")) : r;
}
function _chineseParseIntCore(e) {
const t = _isNegative(e);
let r;
t && (e = e.slice(1));
let a = 0, n = 0, s = -1;
for (let t = 0; t < e.length; ++t) {
if (r = getSpecialCharVal(e.charAt(t)), void 0 === r) return NaN;
r < 10 ? s = -1 == s ? r : 10 * s + r : r < 1e+4 ? (-1 == s && (s = 1), t > 1 && 0 == s && 100 != getSpecialCharVal(e.charAt(t - 2)) && (s = 1),
n += s * r, s = -1) : (-1 != s && (n += s), t && getSpecialCharVal(e.charAt(t - 1)) >= 1e+4 ? a *= getSpecialCharVal(e.charAt(t)) : a += n * r,
n = 0, s = -1);
}
return s > 0 && (e.length > 1 ? (r = getSpecialCharVal(e.charAt(e.length - 2)),
r < 100 ? n += s : (r /= r.toString().charAt(0), n += s * (r / 10))) : n += s),
a += n, t && (a *= -1), a;
}
exports._chineseParseIntCore = _chineseParseIntCore, exports._isNegative = _isNegative,
exports.characters = e, exports.chinese_parseInt = chinese_parseInt, exports.default = chinese_parseInt,
exports.getSpecialCharVal = getSpecialCharVal, exports.isSpecialCharVal = function isSpecialCharVal(e) {
return "number" == typeof getSpecialCharVal(e);
};
//# sourceMappingURL=index.cjs.production.min.cjs.map
;