微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

js实现完美兼容各大浏览器的人民币大小写相互转换

/*小写转大写*/

"+formatRMB(xcc)+"
");

/*大写转小写*/

"+parseRMB(rrrr));

输出结果: 12.22=>壹拾贰元贰角贰分 壹拾贰元贰角贰分=>12.22

我们来看下具体实例

rush:js;"> var c = "零壹贰叁肆伍陆柒捌玖".split(""); // ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"] var _c = {}; // 反向对应关系 for ( var i = 0; i < c.length; i++) { _c[c[i]] = i; };

var d = "元亿***万";
var e = ",拾,佰,仟".split(",");
function unit4(arr) {
var str = "",i = 0;
while (arr.length) {
var t = arr.pop();
str = (c[t] + (t == 0 ? "" : e[i])) + str;
i++;
}

str = str.replace(/[零]{2,}/g,"零");

str = str.replace(/^[零]/,"");
str = str.replace(/[零]$/,"");
if (str.indexOf("零") == 0) {
str = str.substring(1);
}
if (str.lastIndexOf("零") == str.length - 1) {
str = str.substring(0,str.length - 1);
}

return str;
}
function _formatD(a) {
// 转化整数部分
var arr = a.split(""),i = 0,result = "";
while (arr.length) {
var arr1 = arr.splice(-4,4);

var dw = d.ch<a href="https://www.jb51.cc/tag/ara/" target="_blank" class="keywords">ara</a>t(i),unit = unit4(arr1);

if (dw == '万' && !unit) {
  dw = "";
}
result = unit + dw + result;
i += 4;

}
return result == "元" ? "" : result;
}
function _formatF(b){
// 转化小数部分
b = b || "";
switch (b.length) {
case 0:
return "整";
case 1:
return c[b] + "角";
default:
return c[b.charat(0)] + "角" + c[b.charat(1)] + "分";
}
}
function _format(n){
var a = ("" + n).split("."),a0 = a[0],a1 = a[1];
return _formatD(a0) + _formatF(a1);
}

function parse4(u4){
var res = 0;
while (t = /([零壹贰叁肆伍陆柒捌玖])([拾佰仟]?)/g.exec(u4)) {
var n = _c[t[1]],d = {
"" : 1,"拾" : 10,"佰" : 100,"仟" : 1000
}[t[2]];
res += n * d;
u4 = u4.replace(t[0],"");
}
var result = ("0000" + res);
return result.substring(result.length - 4);
}
function _parseD(d) {
var arr = d.replace(/[零]/g,"").split(/[万亿]/),rs = "";
for ( var i = 0; i < arr.length; i++) {
rs += parse4(arr[i]);
}
;
return rs.replace(/^[0]+/,"");
};
function _parseF(f) {
var res = "",t = f.replace(/[^零壹贰叁肆伍陆柒捌玖]+/g,"").split(""); // 去掉单位
if (t.length) {
res = ".";
} else {
return "";
}
;
for ( var i = 0; (i < t.length && i < 2); i++) {
res += _c[t[i]];
}
;
return res;
};
function _parse(rmb) {
var a = rmb.split("元"),a1 = a[1],a0 = a[0];
if (a.length == 1) {
a1 = a0;
a0 = "";
}
return _parseD(a0) + _parseF(a1);

};
//小写转大写
function formatRMB(num){
var n = Number(num);
if(!isNaN(num)){
if(num == 0){
return "零元整";
}else{
return _format(n);
}
}else {
return false;
}
}
//大写转小写
function parseRMB(rmb) {
if (/^[零壹贰叁肆伍陆柒捌玖元万亿拾佰仟角分整]{2,}$/.test(rmb)) {
var result = _parse(rmb);
return rmb == this.formatRMB(result) ? result : result + "(?)";
} else {
return false;
}
};
/小写转大写/
var xcc= "12.22";
document.write(xcc+"=>"+formatRMB(xcc)+"
");

/大写转小写/
var rrrr = "壹拾贰元贰角贰分";
document.write(rrrr+"=>"+parseRMB(rrrr));

再来看一个将RMB转化为大写的例子

16)||(isNaN(num))) return ''; num = (Math.round(num*100)/100).toString(); num =((Math.pow(10,19-num.length)).toString()).substring(1)+num; var i,ret,j,nodeNum,k,subret,len,subChr,CurChr=[]; for (i=0,ret='';i<5;i++,j=i*4+Math.floor(i/4)){ nodeNum=num.substring(j,j+4); for(k=0,subret='',len=nodeNum.length;((k CurChr[k%2] = capNum[nodeNum.charat(k)]+((nodeNum.charat(k)==0)?'':capDigit[len][k]); if (!((CurChr[0]==CurChr[1]) && (CurChr[0]==capNum[0]))) if(!((CurChr[k%2] == capNum[0]) && (subret=='') && (ret==''))) subret += CurChr[k%2]; } subChr = subret + ((subret=='')?'':capUnit[i]); if(!((subChr == capNum[0]) && (ret==''))) ret += subChr; } ret=(ret=='')? capNum[0]+capUnit[3]: ret; return ret; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐