效果圖:
效果示範:
<script> alert(ChangeRMBToCH("1680760.86")); function ChangeRMBToCH(Num) { for(i=Num.length-1;i>=0;i--) { Num = Num.replace(",","")//替換tomoney()中的"," Num = Num.replace(" ","")//替換tomoney()中的空格 } Num = Num.replace("¥","")//替換掉可能出現的¥字元 if(isNaN(Num)) { //驗證輸入的字元是否為數字 alert("請檢查小寫金額是否正確"); return ""; } //---字元處理完畢,開始轉換,轉換採用前後兩部分分別轉換---// part = String(Num).split("."); newchar = ""; //小數點前進行轉化 for(i=part[0].length-1;i>=0;i--) { if(part[0].length > 10){ alert("位元過大,無法計算");return "";}//若數量超過拾億單位,提示 tmpnewchar = "" perchar = part[0].charAt(i); switch(perchar) { case "0": tmpnewchar="零" + tmpnewchar ;break; case "1": tmpnewchar="壹" + tmpnewchar ;break; case "2": tmpnewchar="貳" + tmpnewchar ;break; case "3": tmpnewchar="三" + tmpnewchar ;break; case "4": tmpnewchar="肆" + tmpnewchar ;break; case "5": tmpnewchar="伍" + tmpnewchar ;break; case "6": tmpnewchar="陸" + tmpnewchar ;break; case "7": tmpnewchar="柒" + tmpnewchar ;break; case "8": tmpnewchar="捌" + tmpnewchar ;break; case "9": tmpnewchar="玖" + tmpnewchar ;break; } switch(part[0].length-i-1) { case 0: tmpnewchar = tmpnewchar +"元" ;break; case 1: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break; case 2: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break; case 3: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break; case 4: tmpnewchar= tmpnewchar +"萬" ;break; case 5: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break; case 6: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break; case 7: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break; case 8: tmpnewchar= tmpnewchar +"億" ;break; case 9: tmpnewchar= tmpnewchar +"拾" ;break; } newchar = tmpnewchar + newchar; } //小數點之後進行轉化 if(Num.indexOf(".")!=-1) { if(part[1].length > 2) { alert("小數點之後只能保留兩位,系統將自動截段"); part[1] = part[1].substr(0,2) } for(i=0;i<part[1].length;i++) { tmpnewchar = "" perchar = part[1].charAt(i) switch(perchar) { case "0": tmpnewchar="零" + tmpnewchar ;break; case "1": tmpnewchar="壹" + tmpnewchar ;break; case "2": tmpnewchar="貳" + tmpnewchar ;break; case "3": tmpnewchar="三" + tmpnewchar ;break; case "4": tmpnewchar="肆" + tmpnewchar ;break; case "5": tmpnewchar="伍" + tmpnewchar ;break; case "6": tmpnewchar="陸" + tmpnewchar ;break; case "7": tmpnewchar="柒" + tmpnewchar ;break; case "8": tmpnewchar="捌" + tmpnewchar ;break; case "9": tmpnewchar="玖" + tmpnewchar ;break; } if(i==0)tmpnewchar =tmpnewchar + "角"; if(i==1)tmpnewchar = tmpnewchar + "分"; newchar = newchar + tmpnewchar; } } if(newchar.search("分") != -1) { newchar = newchar.replace("零角", "零"); } //替換所有無用漢字 while(newchar.search("零零") != -1) newchar = newchar.replace("零零", "零"); newchar = newchar.replace("零億", "億"); newchar = newchar.replace("億萬", "億"); newchar = newchar.replace("零萬", "萬"); newchar = newchar.replace("零元", "元"); newchar = newchar.replace("零角", ""); newchar = newchar.replace("零分", ""); if (newchar.charAt(newchar.length-1) == "元" || newchar.charAt(newchar.length-1) == "角") newchar = newchar+"整"; return newchar; } </script>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]
核心代碼:
複製代碼 代碼如下:
function ChangeRMBToCH(Num)
{
for(i=Num.length-1;i>=0;i--)
{
Num = Num.replace(",","")//替換tomoney()中的“,”
Num = Num.replace(" ","")//替換tomoney()中的空格
}
Num = Num.replace("¥","")//替換掉可能出現的¥字元
if(isNaN(Num))
{ //驗證輸入的字元是否為數字
alert("請檢查小寫金額是否正確");
return "";
}
//---字元處理完畢,開始轉換,轉換採用前後兩部分分別轉換---//
part = String(Num).split(".");
newchar = "";
//小數點前進行轉化
for(i=part[0].length-1;i>=0;i--)
{
if(part[0].length > 10){ alert("位元過大,無法計算");return "";}//若數量超過拾億單位,提示
tmpnewchar = ""
perchar = part[0].charAt(i);
switch(perchar)
{
case "0": tmpnewchar="零" + tmpnewchar ;break;
case "1": tmpnewchar="壹" + tmpnewchar ;break;
case "2": tmpnewchar="貳" + tmpnewchar ;break;
case "3": tmpnewchar="三" + tmpnewchar ;break;
case "4": tmpnewchar="肆" + tmpnewchar ;break;
case "5": tmpnewchar="伍" + tmpnewchar ;break;
case "6": tmpnewchar="陸" + tmpnewchar ;break;
case "7": tmpnewchar="柒" + tmpnewchar ;break;
case "8": tmpnewchar="捌" + tmpnewchar ;break;
case "9": tmpnewchar="玖" + tmpnewchar ;break;
}
switch(part[0].length-i-1)
{
case 0: tmpnewchar = tmpnewchar +"元" ;break;
case 1: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;
case 2: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;
case 3: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;
case 4: tmpnewchar= tmpnewchar +"萬" ;break;
case 5: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;
case 6: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;
case 7: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;
case 8: tmpnewchar= tmpnewchar +"億" ;break;
case 9: tmpnewchar= tmpnewchar +"拾" ;break;
}
newchar = tmpnewchar + newchar;
}
//小數點之後進行轉化
if(Num.indexOf(".")!=-1)
{
if(part[1].length > 2)
{
alert("小數點之後只能保留兩位,系統將自動截段");
part[1] = part[1].substr(0,2)
}
for(i=0;i<part[1].length;i++)
{
tmpnewchar = ""
perchar = part[1].charAt(i)
switch(perchar)
{
case "0": tmpnewchar="零" + tmpnewchar ;break;
case "1": tmpnewchar="壹" + tmpnewchar ;break;
case "2": tmpnewchar="貳" + tmpnewchar ;break;
case "3": tmpnewchar="三" + tmpnewchar ;break;
case "4": tmpnewchar="肆" + tmpnewchar ;break;
case "5": tmpnewchar="伍" + tmpnewchar ;break;
case "6": tmpnewchar="陸" + tmpnewchar ;break;
case "7": tmpnewchar="柒" + tmpnewchar ;break;
case "8": tmpnewchar="捌" + tmpnewchar ;break;
case "9": tmpnewchar="玖" + tmpnewchar ;break;
}
if(i==0)tmpnewchar =tmpnewchar + "角";
if(i==1)tmpnewchar = tmpnewchar + "分";
newchar = newchar + tmpnewchar;
}
}
if(newchar.search("分") != -1)
{
newchar = newchar.replace("零角", "零");
}
//替換所有無用漢字
while(newchar.search("零零") != -1)
newchar = newchar.replace("零零", "零");
newchar = newchar.replace("零億", "億");
newchar = newchar.replace("億萬", "億");
newchar = newchar.replace("零萬", "萬");
newchar = newchar.replace("零元", "元");
newchar = newchar.replace("零角", "");
newchar = newchar.replace("零分", "");
if (newchar.charAt(newchar.length-1) == "元" || newchar.charAt(newchar.length-1) == "角")
newchar = newchar+"整";
return newchar;
}