You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.6 KiB
Plaintext
69 lines
1.6 KiB
Plaintext
var chnNumChar = {
|
|
零: 0,
|
|
一: 1,
|
|
二: 2,
|
|
三: 3,
|
|
四: 4,
|
|
五: 5,
|
|
六: 6,
|
|
七: 7,
|
|
八: 8,
|
|
九: 9
|
|
};
|
|
var chnNameValue = {
|
|
十: { value: 10, secUnit: false },
|
|
百: { value: 100, secUnit: false },
|
|
千: { value: 1000, secUnit: false },
|
|
万: { value: 10000, secUnit: true },
|
|
亿: { value: 100000000, secUnit: true }
|
|
}
|
|
var speChar = {
|
|
十: 10,
|
|
十一: 11,
|
|
十二: 12,
|
|
十三: 13,
|
|
十四: 14,
|
|
十五: 15,
|
|
十六: 16,
|
|
十七: 17,
|
|
十八: 18,
|
|
十九: 19
|
|
};
|
|
function ChineseToNumber(chnStr) {
|
|
try {
|
|
var speNum = speChar[chnStr];
|
|
if (speNum != undefined) {
|
|
return speNum;
|
|
}
|
|
|
|
var rtn = 0;
|
|
var section = 0;
|
|
var number = 0;
|
|
var secUnit = false;
|
|
var str = chnStr.split('');
|
|
for (var i = 0; i < str.length; i++) {
|
|
var num = chnNumChar[str[i]];
|
|
if (typeof num !== 'undefined') {
|
|
number = num;
|
|
if (i === str.length - 1) {
|
|
section += number;
|
|
}
|
|
} else {
|
|
var unit = chnNameValue[str[i]].value;
|
|
secUnit = chnNameValue[str[i]].secUnit;
|
|
if (secUnit) {
|
|
section = (section + number) * unit;
|
|
rtn += section;
|
|
section = 0;
|
|
} else {
|
|
section += (number * unit);
|
|
}
|
|
number = 0;
|
|
}
|
|
}
|
|
return rtn + section;
|
|
} catch (e) {
|
|
return 0;
|
|
}
|
|
|
|
} |