/*小寫轉大寫*/
var xcc= "12.22";document.write(xcc+"=>"+formatRMB(xcc)+"<br/>");
/*大寫轉小寫*/
var rrrr = "壹拾貳元貳角貳分";document.write(rrrr+"=>"+parseRMB(rrrr));
輸出結果:
12.22=>壹拾貳元貳角貳分
壹拾貳元貳角貳分=>12.22
我們來看下具體實例
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.charAt(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)+"<br/>"); /*大寫轉小寫*/var rrrr = "壹拾貳元貳角貳分";document.write(rrrr+"=>"+parseRMB(rrrr));再來看一個將RMB轉化為大寫的例子
//人民幣金額轉大寫程序 JavaScript版  //CopyRight Bardo QI  function numToCny(num){  var capUnit = ['萬','億','萬','圓',''];  var capDigit = { 2:['角','分',''], 4:['仟','佰','拾','']};  var capNum=['零','壹','貳','叁','肆','伍','陸','柒','捌','玖'];  if (((num.toString()).indexOf('.') > 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;  }新聞熱點
疑難解答