js 大写数字转小写阿拉伯数字
有个语音项目的需求,语音识别结果只能是大写的数字,所以需要转为小写的数字,才能走下去流程。
//计算字符串中大写数字转小写方法
function cnnumtonum(chnStr){
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 expNumChar= {十:10,十一:11,十二:12,十三:13,十四:14,十五:15,十六:16,十七:17,十八:18,十九:19 };
if(expNumChar[chnStr]) { return expNumChar[chnStr]; }
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 cunit = chnNameValue[str[i]];
if(typeof cunit == 'undefined') {
return false;
}
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 chnStr='三万五千六百四十三';
var aa=cnnumtonum(chnStr);
console.log(aa);
如果字符串中含有不是大写数字的字符,则加上cnnumtonum
方法再加上下面的代码就可以啦
var chnStr='我选择序号是第三百六十五个';
var numLength = 0;//中文数字长度
var curNum ;//当前数字
for(var i = 0;i<chnStr.length;i++){
for(var j = 0;j<chnStr.length;j++){
if(i==j+1){
continue;
}
var chnStr_rs = chnStr.substring(i,j+1);//截取带有大写数字的字符串
var curStr_num = cnnumtonum(chnStr_rs);//当前结果
if(curStr_num){//当前结果是数字
if(chnStr_rs.length > numLength){
numLength = chnStr_rs.length;
curNum = curStr_num;//最终结果赋值
}
}
}
}
console.log('最终结果:'+curNum);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。