首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

阿拉伯数字转中文大写用JS如何转

2012-02-27 
阿拉伯数字转中文大写用JS怎么转?在网上只找到这个但我转不来。。%intcount0inti_indexStringcashnum

阿拉伯数字转中文大写用JS怎么转?
在网上只找到这个

但我转不来。。

<%      
    int       count=0;      
    int       i_index;      
    String       cashnum= "13528.26 ";      
    String       cashup= " ";      
    aaa       class1       =       new       aaa();      
    for       (int       i       =0;i <       cashnum.length();i++)      
    {      
    if       (cashnum.substring(i,i+1).compareTo( ". ")==0)      
    {                                  
    i_index=cashnum.lastIndexOf( ". ");      
    String       num1=cashnum.substring(0,i_index);      
    cashup=class1.change(num1);      
    String       num2=cashnum.substring(i_index+1);      
    if       (num2.length()==1)       num2=num2+ "0 ";      
    cashup=cashup+class1.change2(num2);      
    break;      
    }      
    else      
    count=count+1;      
       
    }      
       
    if       (count==cashnum.length())      
    cashup=class1.change(cashnum)+ "整 ";      
    out.println(cashup);      
    %>      
    <%!          
    public       class       aaa{      
    String[]       subdw={ "圆 ", "拾 ", "佰 ", "仟 ", "万 "};      
    String[]       subdw2={ "分 ", "角 "};      
    String[][]       subup={{ "0 ", "零 "},{ "1 ", "壹 "},{ "2 ", "贰 "},{ "3 ", "叁 "},{ "4 ", "肆 "},{ "5 ", "伍 "},{ "6 ", "陆 "},{ "7 ", "柒 "},{ "8 ", "捌 "},{ "9 ", "玖 "}};      
                                                                                                                   
    public       String           change(String       str)      
    {      
    String       str_return= " ";      


    int       lenstr=str.length();      
    for(int           i=0;i <lenstr;i++)      
    {      
    char       location=str.charAt(i);      
    for       (int       j=0;j <10;j++)      
    {      
            if       (subup[j][0]==subup[(int)location-48][0])      
    str_return+=subup[j][1];      
    }      
       
    str_return=str_return+subdw[lenstr-i-1];      
    //lenstr=lenstr-1;      
       
    }      
       
    return(str_return);      
    }                          
       
    public       String           change2(String       str)      
    {      
    String       str_return= " ";      
    int       lenstr=str.length();      
    for(int           i=0;i <lenstr;i++)      
    {      
    char       location=str.charAt(i);      
    for       (int       j=0;j <10;j++)      
    {      
            if       (subup[j][0]==subup[(int)location-48][0])      
    str_return+=subup[j][1];      
    }      
       
    str_return=str_return+subdw2[lenstr-i-1];      
    //lenstr=lenstr-1;      
       
    }      
       
    return(str_return);      
    }                  
    }      
    %>

[解决办法]
更新版,欢迎大家继续测试:
<script language= "javascript ">
function i2c(n){
if(typeof(n) == "number "){
if(-1 == n.toString().indexOf( ". ")){
return seti2c(n);
}else{
var i,istr,f,fstr,a,rstr;
a = n.toString().split( ". ");
i = a[0];
f = a[1];
istr = seti2c(i);
fstr = setf2c(f);
rstr = istr+ "零 "+fstr;
rstr = rstr.replace(/零+/g, "零 ");
return rstr;
}
}else{
return "--- ";
}
}

function seti2c(n){
var ns = n.toString();
var tempstr = " ";
for(var i=1;i <ns.length+1;i++){
switch(i){
case 1:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "圆 "+tempstr;
}else{


tempstr = "圆 "+tempstr;
}
break;
case 2:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "拾 "+tempstr;
}else{
tempstr = "0 "+tempstr;
}
break;
case 3:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "佰 "+tempstr;
}else{
tempstr = "0 "+tempstr;
}
break;
case 4:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "仟 "+tempstr;
}else{
tempstr = "0 "+tempstr;
}
break;
case 5:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "万 "+tempstr;
}else{
tempstr = "万 "+tempstr;
}
break;
case 6:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "拾 "+tempstr;
}else{
tempstr = "0 "+tempstr;
}
break;
case 7:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "佰 "+tempstr;
}else{
tempstr = "0 "+tempstr;
}
break;
case 8:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "仟 "+tempstr;
}else{
tempstr = "0 "+tempstr;
}
break;
case 9:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "亿 "+tempstr;
}else{
tempstr = "亿 "+tempstr;
}
break;
case 10:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "拾 "+tempstr;
}else{
tempstr = "0 "+tempstr;
}
break;
case 11:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "佰 "+tempstr;
}else{
tempstr = "0 "+tempstr;
}
break;
case 12:
var t = ns.substr(ns.length-i,1);
if(t!= "0 "){
tempstr = t+ "仟 "+tempstr;
}else{
tempstr = "0 "+tempstr;
}
break;
default:break;
}
}
return g2b(tempstr);
}

function setf2c(n){
var ns = n.toString();
var tempstr = " ";
for(var i=0;i <ns.length;i++){
switch(i){
case 0:
var t = ns.substr(i,1);
if(t!= "0 "){
tempstr += t+ "角 ";
}else{
tempstr += "0 ";
}
break;
case 1:
var t = ns.substr(i,1);
if(t!= "0 "){
tempstr += t+ "分 ";
}
break;
default:break;
}
}
return g2b(tempstr);
}

function g2b(s){
rs = s.replace(/0+/g, "0 ");
rs = rs.replace( "0圆 ", "圆 ");
rs = rs.replace( "0亿 ", "亿 ");
rs = rs.replace( "0万 ", "万 ");
rs = rs.replace( "亿万 ", "亿 ");
rs = rs.replace(/0/g, "零 ");
rs = rs.replace(/1/g, "壹 ");
rs = rs.replace(/2/g, "贰 ");
rs = rs.replace(/3/g, "叁 ");
rs = rs.replace(/4/g, "肆 ");
rs = rs.replace(/5/g, "伍 ");
rs = rs.replace(/6/g, "陆 ");


rs = rs.replace(/7/g, "柒 ");
rs = rs.replace(/8/g, "捌 ");
rs = rs.replace(/9/g, "玖 ");
return rs;
}

document.write(i2c(2334210001.04));
</script>
[解决办法]
测试时又发现点小bug, 顺便把replace正则做了下简化, 口黑口黑

<script>
function DX(n) {
if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n))
return "数据非法 ";
var unit = "千百拾亿千百拾万千百拾元角分 ", str = " ";
n += "00 ";
var p = n.indexOf( '. ');
if (p > = 0)
n = n.substring(0, p) + n.substr(p + 1, 2);
unit = unit.substr(unit.length - n.length);
for (var i=0; i < n.length; i++)
str += '零壹贰叁肆伍陆柒捌玖 '.charAt(n.charAt(i)) + unit.charAt(i);
return str.replace(/零(千|百|拾|角)/g, "零 ")
.replace(/(零)+/g, "零 ")
.replace(/零(万|亿|元)/g, "$1 ")
.replace(/(亿)万|壹(拾)/g, "$1$2 ")
.replace(/^元零?|零分/g, " ")
.replace(/元$/g, "元整 ");
}
alert(DX( "01123.03 "));
alert(DX(101000102304.1));
alert(DX(102014.1));
alert(DX(0.1));
</script>

热点排行
Bad Request.