自己写的一个javascript汉字换数字
var chnNumChar = {
分:0.01,毛:0.1,
角:0.1,
零 : 0,
壹 : 1,
贰 : 2,
叁 : 3,
肆 : 4,
伍 : 5,
陆 : 6,
柒 : 7,
捌 : 8,
玖 : 9,
貮 : 2,
一:1,
二:2,
三:3,
四:4,
五:5,
六:6,
七:7,
八:8,
九:9,
两:2,
十 : 10,
拾 : 10,
百 : 100,
佰 : 100,
千 : 1000,
仟 : 1000,
万 : 10000,
萬 : 10000,
亿 : 100000000,
億 : 100000000,
兆 : 1000000000000
};
function ObjChangeToNumber(obj){
var reg = new RegExp("[\\u4E00-\\u9FFF]+","g");
var objVal = $(obj).val();
var afterVal = '';
var isNumber = false;
var isChn = false;
if(parseInt(objVal) == 0 || objVal == null || objVal == 'undefined'){
return 0;
}
if(parseInt(objVal) > 0){
isNumber = true;
}
if(!isNumber){
//考虑全汉字的格式
var arr = objVal.split('');
for(var i = 0; i < arr.length; i++){
console.log(arr[i]);
if(reg.test(arr[i])){
isChn = true;
}else{
isChn = false;
//break;
}
console.log(isChn);
}
}
if(isNumber){
afterVal = parseInt(objVal);
}else if(isChn){
//①第一判断是否含有[万]的情况
//②第二中判断是不含有[万]但是含有[千]的情况
//③第三中判断是不含有[万]不含有[千]含有[百]的情况
//④第四中判断是不含有[万]不含有[千]不含有[百]含有[十]的情况
//⑤第四中判断是不含有[万]不含有[千]不含有[百]不含有[十]的情况
//①实现
if(objVal.indexOf('万')>-1 || objVal.indexOf('萬')>-1){
//万前面的数字*10000+万后面的数字
var len = objVal.indexOf('万')>-1?objVal.indexOf('万'):objVal.indexOf('萬');
afterVal = changeNumber(objVal.substr(0,len)) * 10000 + changeNumber(objVal.substr(len+1))
}else{
afterVal = changeNumber(objVal)
}
}
console.log('afterVal===='+afterVal);
$("#afterChange").val(afterVal);
}
//这个方法主要用于转换汉字万以内的数字
function changeNumber(str){
var lenTmp = '';
var len = '';
var num = '0';
var thousand = false;
var hundred = false;
var ten = false;
str = str.replace('零','');
if(str.indexOf('千')>-1 || str.indexOf('仟')>-1){
//取得千之前的汉字
len = str.indexOf('千')>-1?str.indexOf('千'):str.indexOf('仟');
num = Number(chnNumChar[str.substr(0,1)] * chnNumChar['千']) + Number(num);
if(str.indexOf('百')>-1 || str.indexOf('佰')>-1){
len = str.indexOf('百')>-1?str.indexOf('百'):str.indexOf('佰');
num = Number(chnNumChar[str.substr(len-1,1)] * chnNumChar['百']) + Number(num);
}
if(str.indexOf('十')>-1 || str.indexOf('拾')>-1){
len = str.indexOf('十')>-1?str.indexOf('十'):str.indexOf('拾');
num = Number(chnNumChar[str.substr(len-1,1)] * chnNumChar['十']) + Number(num);
}
if(str.length > len+1){
num = Number(chnNumChar[str.substr(len+1,1)] * 1) + Number(num);
}
thousand = true;
}
//如果不是千,那么就从百开始判断
if( !thousand ){
if(str.indexOf('百')>-1 || str.indexOf('佰')>-1){
len = str.indexOf('百')>-1?str.indexOf('百'):str.indexOf('佰');
num = Number(chnNumChar[str.substr(len-1,1)] * chnNumChar['百']) + Number(num);
if(str.indexOf('十')>-1 || str.indexOf('拾')>-1){
len = str.indexOf('十')>-1?str.indexOf('十'):str.indexOf('拾');
num = Number(chnNumChar[str.substr(len-1,1)] * chnNumChar['十']) + Number(num);
}
if(str.length > len+1){
num = Number(chnNumChar[str.substr(len+1,1)] * 1) + Number(num);
}
hundred = true;
}
}
//如果不是百,那么就从十开始判断
if(!thousand && !hundred){
if(str.indexOf('十')>-1 || str.indexOf('拾')>-1){
len = str.indexOf('十')>-1?str.indexOf('十'):str.indexOf('拾');
if(len==0){
num = '10';
}else{
num = Number(chnNumChar[str.substr(len-1,1)] * chnNumChar['十']) + Number(num);
}
if(str.length > len+1){
num = Number(chnNumChar[str.substr(len+1,1)] * 1) + Number(num);
}
ten = true;
}
}
if(!thousand && !hundred && !ten){
num = (Number(chnNumChar[str]) * 1) + Number(num);
}
return num;
}