感觉很简单 但是没思路 望高人指教下。。

解决方案 »

  1.   

    以前曾有人发过~import java.awt.*;
    import java.awt.event.*;class Test
    {
        public static void main(String[] args)
        {
            String num = "零壹贰叁肆伍陆柒捌玖";
            String dw = "圆拾佰仟万亿";
            String m = "30020.23";
            String mm[] = null;
            mm = m.split("\\.");
            String money = mm[0];        String result = num.charAt(Integer.parseInt("" + mm[1].charAt(0))) +
                "角" +
                num.charAt(Integer.parseInt("" + mm[1].charAt(1))) + "分";        for (int i = 0; i < money.length(); i++)
            {
                String str = "";
                int n = Integer.parseInt(money.substring(money.length() - i - 1,
                    money.length() - i));
                str = str + num.charAt(n);
                if (i == 0)
                {
                    str = str + dw.charAt(i);
                }
                else if ( (i + 4) % 8 == 0)
                {
                    str = str + dw.charAt(4);
                }
                else if (i % 8 == 0)
                {
                    str = str + dw.charAt(5);
                }
                else
                {
                    str = str + dw.charAt(i % 4);
                }
                result = str + result;
            }
            result = result.replaceAll("零([^圆]{1})", "零");
            result = result.replaceAll("零+", "零");
            result = result.replaceAll("零圆", "圆");
            System.out.println(result);    }
    }
      

  2.   

    <script language="javascript">
    var strArray = new Array();
    strArray[0] = "元"
    strArray[1] = "十"
    strArray[2] = "百"
    strArray[3] = "千"var str = "1235";var len = str.length;var ss = "";
    for(i=1;i<=len;i++){
    ss += str.substring(i-1,i)+strArray[len-i]; 
    }
    alert(ss);
    </script>
      

  3.   

    1.(C#):
    //加到类的定义部分 
    private static string[] cstr={"零","壹","贰","叁","肆", "伍", "陆","柒","捌","玖"}; 
    private static string[] wstr={"","","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟"}; 
    //数字必须在12位整数以内的字符串 
    //调用方式如:Label1.Text=ConvertInt("数字字符串"); public string ConvertInt(string str) 

    int len=str.Length; 
    int i; 
    string tmpstr,rstr; 
    rstr=""; 
    for(i=1;i<=len;i++) 

    tmpstr=str.Substring(len-i,1); 
    rstr=string.Concat(cstr[Int32.Parse(tmpstr)]+wstr[i],rstr); 

    rstr=rstr.Replace("拾零","拾"); 
    rstr=rstr.Replace("零拾","零"); 
    rstr=rstr.Replace("零佰","零"); 
    rstr=rstr.Replace("零仟","零"); 
    rstr=rstr.Replace("零萬","萬"); 
    for(i=1;i<=6;i++) 
    rstr=rstr.Replace("零零","零"); 
    rstr=rstr.Replace("零萬","零"); 
    rstr=rstr.Replace("零億","億"); 
    rstr=rstr.Replace("零零","零"); 
    rstr+="圆整"; 
    return rstr; 
    }  
     2.
    转换大小写金额的ASP代码 
    <% 
    dim a '要转换成大写的金额 
    dim atoc '转换之后的值 
    Dim String1 '如下定义 
    Dim String2 '如下定义 
    Dim String3 '从原A值中取出的值 
    Dim I '循环变量 
    Dim J 'A的值乘以100的字符串长度 
    Dim Ch1 '数字的汉语读法 
    Dim Ch2 '数字位的汉字读法 
    Dim nZero '用来计算连续的零值是几个 String1 = "零壹贰叁肆伍陆柒捌玖" 
    String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分" 
    nZero = 0 If InStr(1, CStr(a * 100), ".") <> 0 Then 
    err.Raise 5000, , "此函数( AtoC() )只能转换小数点后有两位以内的数!" 
    End If J = Len(CStr(a * 100)) 
    String2 = Right(String2, J) '取出对应位数的STRING2的值 For I = 1 To J 
    String3 = Mid(a * 100, I, 1) '取出需转换的某一位的值 If I <> (J - 3) + 1 And I <> (J - 7) + 1 And I <> (J - 11) + 1 And I <>(J - 15) + 1 Then 
    If String3 = 0 Then 
    Ch1 = "" 
    Ch2 = "" 
    nZero = nZero + 1 
    ElseIf String3 <> 0 And nZero <> 0 Then 
    Ch1 = "零" & Mid(String1, clng(String3) + 1, 1) 
    Ch2 = Mid(String2, I, 1) 
    nZero = 0 
    Else 
    Ch1 = Mid(String1, clng(String3) + 1, 1) 
    Ch2 = Mid(String2, I, 1) 
    nZero = 0 
    End If 
    Else '该位是万亿,亿,万,元位等关键位 
    If String3 <> 0 And nZero <> 0 Then 
    Ch1 = "零" & Mid(String1, clng(String3) + 1, 1) 
    Ch2 = Mid(String2, I, 1) 
    nZero = 0 
    ElseIf String3 <> 0 And nZero = 0 Then 
    Ch1 = Mid(String1, clng(String3) + 1, 1) 
    Ch2 = Mid(String2, I, 1) 
    nZero = 0 
    ElseIf String3 = 0 And nZero >= 3 Then 
    Ch1 = "" 
    Ch2 = "" 
    nZero = nZero + 1 
    Else 
    Ch1 = "" 
    Ch2 = Mid(String2, I, 1) 
    nZero = nZero + 1 
    End If If I = (J - 11) + 1 Or I = (J - 3) + 1 Then '如果该位是亿位或元位,则必须写上 
    Ch2 = Mid(String2, I, 1) 
    End If End If 
    AtoC = AtoC & Ch1 & Ch2 If I = J And String3 = 0 Then '最后一位(分)为0时,加上"整" 
    AtoC = AtoC & "整" 
    End If Next 
    if a=0 then 
    atoc="零元整" 
    end if 
    %>  
     3.
    <!--#include file=common.asp--> 
    <% 
    dim tmpnum 
    '从第一张页面传过来的小写金额 
    tmpnum=request("page1num") 
    '调用并显示大写金额 
    response.write rmb(cdbl(tmpnum)) 
    response.end 
    %> 
    common.asp 
    <% 
    Function rmb(num) num = FormatNumber(num, 2) 
    Dim numList 
    Dim rmbList 
    Dim numLen 
    Dim numChar 
    Dim numstr 
    Dim n 
    Dim n1, n2 
    Dim hz 
    numList = "零壹贰叁肆伍陆柒捌玖" 
    rmbList = "分角元拾佰仟万拾佰仟亿拾佰仟万" If num > 9999999999999.99 Then 
    rmb = "超出范围的人民币值" 
    Exit Function 
    End If numstr = CStr(num * 100) 
    numLen = Len(numstr) 
    n = 1 
    Do While n <= numLen 
    numChar = CInt(Mid(numstr, n, 1)) 
    n1 = Mid(numList, numChar + 1, 1) 
    n2 = Mid(rmbList, numLen - n + 1, 1) 
    If Not n1 = "零" Then 
    hz = hz + CStr(n1) + CStr(n2) 
    Else 
    If n2 = "亿" Or n2 = "万" Or n2 = "元" Or n1 = "零" Then 
    Do While Right(hz, 1) = "零" 
    hz = Left(hz, Len(hz) - 1) 
    Loop 
    End If 
    If (n2 = "亿" Or (n2 = "万" And Right(hz, 1) <> "亿") Or n2 = "元") Then 
    hz = hz + CStr(n2) 
    Else 
    If Left(Right(hz, 2), 1) = "零" Or Right(hz, 1) <> "亿" Then 
    hz = hz + n1 
    End If 
    End If 
    End If 
    n = n + 1 
    Loop 
    Do While Right(hz, 1) = "零" 
    hz = Left(hz, Len(hz) - 1) 
    Loop 
    If Right(hz, 1) = "元" Then 
    hz = hz + "整" 
    End If 
    rmb = hz 
    End Function %> 
    这个版本解决了小数位不能到分的问题,处理方式符合会计方式!  
     4.
    金额大小写转换的asp完全无错版本 
    <!--#include file=common.asp--> 
    <% 
    dim tmpnum 
    '从第一张页面传过来的小写金额 
    tmpnum=request("page1num") 
    '调用并显示大写金额 
    response.write rmb(cdbl(tmpnum)) 
    response.end 
    %> 
    金额大小写转换的asp完全无错版本 
    <!--#include file=common.asp--> 
    <% 
    dim tmpnum 
    '从第一张页面传过来的小写金额 
    tmpnum=request("page1num") 
    '调用并显示大写金额 
    response.write rmb(cdbl(tmpnum)) 
    response.end 
    %> 
    common.asp 
    <% 
    Function rmb(num) num = FormatNumber(num, 2) 
    Dim numList 
    Dim rmbList 
    Dim numLen 
    Dim numChar 
    Dim numstr 
    Dim n 
    Dim n1, n2 
    Dim hz 
    numList = "零壹贰叁肆伍陆柒捌玖" 
    rmbList = "分角元拾佰仟万拾佰仟亿拾佰仟万" If num > 9999999999999.99 Then 
    rmb = "超出范围的人民币值" 
    Exit Function 
    End If numstr = CStr(num * 100) 
    numLen = Len(numstr) 
    n = 1 
    Do While n <= numLen 
    numChar = CInt(Mid(numstr, n, 1)) 
    n1 = Mid(numList, numChar + 1, 1) 
    n2 = Mid(rmbList, numLen - n + 1, 1) 
    If Not n1 = "零" Then 
    hz = hz + CStr(n1) + CStr(n2) 
    Else 
    If n2 = "亿" Or n2 = "万" Or n2 = "元" Or n1 = "零" Then 
    Do While Right(hz, 1) = "零" 
    hz = Left(hz, Len(hz) - 1) 
    Loop 
    End If 
    If (n2 = "亿" Or (n2 = "万" And Right(hz, 1) <> "亿") Or n2 = "元") Then 
    hz = hz + CStr(n2) 
    Else 
    If Left(Right(hz, 2), 1) = "零" Or Right(hz, 1) <> "亿" Then 
    hz = hz + n1 
    End If 
    End If 
    End If 
    n = n + 1 
    Loop 
    Do While Right(hz, 1) = "零" 
    hz = Left(hz, Len(hz) - 1) 
    Loop 
    If Right(hz, 1) = "元" Then 
    hz = hz + "整" 
    End If 
    rmb = hz 
    End Function %>  
    5.
    <%function Money(thenumber) 
    dim Money,i,String1,String2,length,checkp&acute;定义变量 
    dim one(),onestr()&acute;定义数组 String1 = "零壹贰叁肆伍陆柒捌玖" 
    String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分厘毫" checkp=instr(thenumber,".")&acute;判断是否含有小数位 
    if checkp<>0 then 
    thenumber=replace(thenumber,".","")&acute;去除小数位 
    end if length=len(thenumber) &acute;取得数据长度 
    redim one(length-1)&acute;重新定义数组大小 
    redim onestr(length-1)&acute;重新定义数组大小 for i=0 to length-1 one(i)=mid(thenumber,i+1,1) &acute;循环取得每一位的数字 
    one(i)=mid(string1,one(i)+1,1)&acute;循环取得数字对应的大写 
    if checkp=0 then 
    &acute;不含有小数的数据其数字对应的单位 
    onestr(i)=mid(string2,14-length+i,1) 
    else 
    &acute;含有小数的数据其数字对应的单位 
    onestr(i)=mid(string2,15-length+i+len(thenumber)-checkp,1) 
    end if one(i)=one(i)&onestr(i)&acute;将数字与单位组合 
    next Money=replace(join(one)," ","") &acute;取得数组中所有的元素,并连接起来 
    Money=replace(Money,"零元","元") 
    Money=replace(Money,"零万","万") 
    Money=replace(Money,"零亿","亿") 
    Money=replace(Money,"零仟","零") 
    Money=replace(Money,"零佰","零") 
    Money=replace(Money,"零拾","零") do while not instr(Money,"零零")=0 
    Money=replace(Money,"零零","零") 
    loop response.write Money &acute;显示结果 
    end function 
    %>