参考:https://www.jb51.net/article/86391.htm
注:仅修正 ChineseToNumber() 方法中 number 默认值为1,防止单独的 十 转换为 0
<script type="text/javascript"> 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} } function ChineseToNumber(chnStr) { var rtn = 0; var section = 0; var number = 1; 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; } var str = "五"; var str1 = "十五"; var str2 = "二十"; var str3 = "二十五"; var str4 = "五百零二"; console.log(str, " : ", ChineseToNumber(str)); console.log(str1, " : ", ChineseToNumber(str1)); console.log(str2, " : ", ChineseToNumber(str2)); console.log(str3, " : ", ChineseToNumber(str3)); console.log(str4, " : ", ChineseToNumber(str4)); </script>