我们的需求很简单,传过来3转换成三就成。问问大家有没有最简单的办法。最好能在页面中直接处理了,不行就用java~谢谢了~

解决方案 »

  1.   

    我有个金额转换的js,你拿去根据实际需要改改<script type="text/javascript">
    var Nums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); 
    var Digits = new Array("", "拾", "佰", "仟"); 
    var Units = new Array("", "万", "亿", "万亿","仟兆"); /**
    * 检查字符串是否为合法的金额
    * @param {String} 字符串
    * @return {bool} 是否为合法金额
    */
    function isMoney(s) 
    {
    var isMoney = RegExp(/^[0-9]*\.?[0-9]{0,2}$/);
    return ( isMoney.test(s) );
    }/**
    * 判断输入变量是否是浮点数
    * @param {String} 要检查的变量值
    * @return {bool} 是否为浮点数
    */
    function isFloat( s )
    {
    var isFloat = RegExp(/^([0-9]+(\.+))[0-9]+$/);
    return ( isFloat.test(s) );
    }/**
    * 检查指定的input中输入的金额是否合法,如果合法返回金额,否则返回null
    * @param {String} 要检查的input的id
    */
    function getMoney(inputName)
    {
    var money = document.getElementById(inputName).value;
    if ( money !=null && money.length>0 )
    {
    return removeComma( money );
    }else{
    return null;
    }
    }/**
    * 检查指定的input中输入的金额是否合法,并进行显示转换
    * @param {String} 要检查的input的id
    */
    function checkMoney(inputName)
    {
    var input = document.getElementById(inputName);
    if ( isEmpty( input.value ) )
    {
    return false;
    }
    var testMoney = removeComma( input.value );
    if ( isMoney( testMoney ) )
    {
    input.value = toCashWithCommaAndDot( testMoney );
    return true;
    }else{
    input.value = "";
    input.focus();
    return false;
    }
    } /**
    * 转换为中文金额表示
    * @param {String} 要转换的金额字符串
    * @return {String} 转换后的金额字符串
    */
    function toChineseCash( cash )
    {
    var noCommaCash = removeComma(cash);
    if( !isFloat( noCommaCash ) )
    return convertIntegerToChineseCash(noCommaCash);

    var dotIndex = noCommaCash.indexOf('.');
    var integerCash = noCommaCash.substring( 0, dotIndex );
    var decimalCash = noCommaCash.substring( dotIndex + 1 );

    return convertIntegerToChineseCash(integerCash)+convertDecimalToChineseCash(decimalCash);
    }/**
    * 为金额添加,分割符
    * @param {String} 要转换的金额字符串
    * @return {String} 转换后的金额字符串
    */
    function toCashWithComma( cash )
    {
    while( cash.charAt(0) == '0' )
    {
    cash = cash.substr(1);
    }
    if( !isFloat( cash ) )
    return addComma(cash);

    var dotIndex = cash.indexOf('.');
    var integerCash = cash.substring( 0, dotIndex );
    var decimalCash = cash.substring( dotIndex );

    return addComma(integerCash)+decimalCash;
    }/**
    * 为金额添加,分割符和.分割符
    * @param {String} 要转换的金额字符串
    * @return {String} 转换后的金额字符串
    */
    function toCashWithCommaAndDot( cash )
    {
    var temp = toCashWithComma( cash );
    if ( temp.length == 0 )
    {
    return "0.00";
    }
    var dotPos = temp.indexOf(".");
    if ( dotPos < 0 )
    {
    return temp+'.00';
    }
    if ( dotPos == 0 )
    {
    temp = '0' + temp;
    dotPos = temp.indexOf(".");
    }
    if ( dotPos == temp.length-2)
    {
    return temp + '0';
    }
    if ( dotPos == temp.length-1)
    {
    return temp + '00';
    }
    return temp;
    }function convertIntegerToChineseCash(cash)
    {
    if ( cash == "0" )
    return "";
        var S = ""; //返回值 
        var p = 0; //字符位置指针 
        var m = cash.length % 4; //取模     // 四位一组得到组数 
        var k = (m > 0 ? Math.floor(cash.length / 4) + 1 : Math.floor(cash.length / 4)); 
        // 外层循环在所有组中循环 
        // 从左到右 高位到低位 四位一组 逐组处理 
        // 每组最后加上一个单位: "[万亿]","[亿]","[万]" 
        for (var i = k; i > 0; i--) 
        {
            var L = 4; 
            if (i == k && m != 0)
            {
                L = m;
            }
            // 得到一组四位数 最高位组有可能不足四位 
            var s = cash.substring(p, p + L);
            var l = s.length;        // 内层循环在该组中的每一位数上循环 从左到右 高位到低位 
            for (var j = 0;j < l;j++)
            {
                var n = parseInt(s.substring(j, j+1));
                if (n == 0)
                {
                    if ((j < l - 1) && (parseInt(s.substring(j + 1, j + 1+ 1)) > 0) //后一位(右低) 
                        && S.substring(S.length-1,S.length) != Nums[n])
                    {
                        S += Nums[n];
                    }
                }
                else 
                {
                    //处理 1013 一千零"十三", 1113 一千一百"一十三" 
                    if (!(n == 1 && (S.substring(S.length-1,S.length) == Nums[0] | S.length == 0) && j == l - 2)) 
                    {
                        S += Nums[n];
                    }
                    S +=  Digits[l - j - 1];
                }
            }
            p += L;
            // 每组最后加上一个单位: [万],[亿] 等 
            if (i < k)//不是最高位的一组 
            {
                if (parseInt(s)!= 0)
                {
                    //如果所有 4 位不全是 0 则加上单位 [万],[亿] 等 
                    S += Units[i - 1];
                }
            }
            else
            {
                //处理最高位的一组,最后必须加上单位 
                S += Units[i - 1];
            }
        }
    //alert(S);
    return S+"圆";
    }function convertDecimalToChineseCash( cash )
    {
    var returnCash = "";

    if ( cash == "00" )
    returnCash = "整";
    else
    {
    for( var i = 0;i < cash.length; i++ )
    {
    if( i >= 2 )
    break;
    var intValue = parseInt(cash.charAt(i));

    switch( i )
    {
    case 0:
    if ( intValue != 0 )
    returnCash += Nums[intValue]+"角";
    break;
    case 1:
    returnCash += Nums[intValue]+"分";
    break;
    default:
    break;
    }
    }

    }
    return returnCash;
    }function addComma(str) {
    if (str.length > 3) 
    {
    var mod = str.length % 3;
    var output = (mod > 0 ? (str.substring(0,mod)) : '');
    for (i=0 ; i < Math.floor(str.length / 3); i++) {
    if ((mod == 0) && (i == 0))
    output += str.substring(mod+ 3 * i, mod + 3 * i + 3);
    else
    output += ',' + str.substring(mod + 3 * i, mod + 3 * i + 3);
    }
    return (output);
    }
    else return str;
    }function removeComma(str)
    {
    return str.replace(new RegExp('\,',["g"]),'');
    }
    </script>你可以把它放在一个单独的js文件里
    用java代码写法也差不多
      

  2.   


    <script language="javascript">
     function replaceReg(reg,str){ 
      return str.replace(reg,function(m){return arr[m];}) 
     } 
     arr=new Array("零","一","二","三","四","五","六","七","八","九"); 
     var reg = /\d/g; 
     var str = =document.getElementsByName("payoffBounty")[0].value;
     
     document.write(replaceReg(reg,str)+'<br />'); </script>把"payoffBounty"换成你的文本框的property 
      

  3.   


    <script language="javascript">
    function replaceReg(reg, str) {
    return str.replace(reg, function(m) {
    return arr[m];
    })
    }
    arr = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");
    var reg = /\d/g;
    var str = '3'; document.write(replaceReg(reg, str) + '<br />');
    </script>
    如果是转换金额的话  1楼的就可以了
      

  4.   

    用java处理金钱
    public class TestMoney { public static void main(String[] args) { System.out.println(convertToChineseNumber(19.8));
    } public static String convertToChineseNumber(double number) {
    StringBuffer chineseNumber = new StringBuffer();
    String[] num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
    String[] unit = { "分", "角", "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟",
    "亿", "拾", "佰", "仟", "万" };
    String tempNumber = String.valueOf(Math.round((number * 100)));
    int tempNumberLength = tempNumber.length();
    if ("0".equals(tempNumber)) {
    return "零圆整";
    }
    if (tempNumberLength > 15) {
    try {
    throw new Exception("超出转化范围.");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    boolean preReadZero = true; // 前面的字符是否读零
    for (int i = tempNumberLength; i > 0; i--) {
    if ((tempNumberLength - i + 2) % 4 == 0) {
    // 如果在(圆,万,亿,万)位上的四个数都为零,如果标志为未读零,则只读零,如果标志为已读零,则略过这四位
    if (i - 4 >= 0 && "0000".equals(tempNumber.substring(i - 4, i))) {
    if (!preReadZero) {
    chineseNumber.insert(0, "零");
    preReadZero = true;
    }
    i -= 3; // 下面还有一个i--
    continue;
    }
    // 如果当前位在(圆,万,亿,万)位上,则设置标志为已读零(即重置读零标志)
    preReadZero = true;
    }
    Integer digit = Integer.parseInt(tempNumber.substring(i - 1, i));
    if (digit == 0) {
    // 如果当前位是零并且标志为未读零,则读零,并设置标志为已读零
    if (!preReadZero) {
    chineseNumber.insert(0, "零");
    preReadZero = true;
    }
    // 如果当前位是零并且在(圆,万,亿,万)位上,则读出(圆,万,亿,万)
    if ((tempNumberLength - i + 2) % 4 == 0) {
    chineseNumber.insert(0, unit[tempNumberLength - i]);
    }
    }
    // 如果当前位不为零,则读出此位,并且设置标志为未读零
    else {
    chineseNumber
    .insert(0, num[digit] + unit[tempNumberLength - i]);
    preReadZero = false;
    }
    }
    // 如果分角两位上的值都为零,则添加一个“整”字
    if (tempNumberLength - 2 >= 0
    && "00".equals(tempNumber.substring(tempNumberLength - 2,
    tempNumberLength))) {
    chineseNumber.append("整");
    }
    return chineseNumber.toString();
    }
    }
      

  5.   


    package com;
    public class Test{

    private static String changeValue(int i){
    if(i < 0 || i > 9){
    return "非法输入";
    }else {
    String[] nums = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; 
    return  nums[i];
    }
    }
    public static void main(String[] args){
    System.out.println(changeValue(3));
    System.out.println(changeValue(-1));
    System.out.println(changeValue(7));
    }
    }页面引入Test类
    <%
         System.out.println(Test.changeValue("你想转换的数字"));
    %>
      

  6.   

    都是强人!!!厉害,代码贴得漫天飞!!请问有没有 WINDOWXP SP2 的源代码,参考下,谢谢。贴出来就更好了。
      

  7.   


    JavaScript
       // 数字金额转换汉字金额
     FUNCTION ATOC(NUMBERVALUE)
      IF (NUMBERVALUE==0)
      
      STRING2 = STRING2.SUBSTR(STRING2.LENGTH-LEN, LEN);   // 取出对应位数的STRING2的值
      
      FOR(VAR I=0; I<LEN; I++)ELSE IF ( STRING3 != 0 && NZERO != 0 )ELSE
       }ELSE{              // 该位是万亿,亿,万,元位等关键位
        IF( STRING3 != 0 && NZERO != 0 )ELSE IF ( STRING3 != 0 && NZERO == 0 )ELSE IF( STRING3 == 0 && NZERO >= 3 )ELSE
        
        IF( I == (LEN - 11) || I == (LEN - 3)) 
        
       }
       CHINESEVALUE = CHINESEVALUE + CH1 + CH2;
       
      }
      
      IF ( STRING3 == 0 )
      
      RETURN CHINESEVALUE;
     }