将小写金额转换成为大写

如果有Bug,请留言我我及时的改。

public string FormatMoneyToUpper(decimal money)
    {
        bool isTrue = false;//判定是否为负值,是则为True否则为False
        if (money < 0)
        {
            //如果该值是负数,那先将该值转换为正数,然后将Istrue标记为True
            money=Math.Abs(money);
            isTrue = true;
        }
        //先转换为小数点后两位
        string oldNum = Math.Round(money, 2).ToString();
        //如果字符串中不存在"."那么就将他加".00" ,如果是一位小数则在后面补0;
        if (oldNum.IndexOf(".") == -1)
        { oldNum = oldNum + ".00"; }
        else if (oldNum.IndexOf(".") == oldNum.Length - 2)
        { oldNum = oldNum + "0";}

        char[] charArr = oldNum.ToCharArray();
        string upper="";
        string upperA = "";
        string[] upperNum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
        string[] unit = { "分", "角", "圆", "拾", "佰", "仟", "万", "亿" };
        int len = 1;
        while (len <= oldNum.Length)
        {
            //判断每位对应的大写
            switch (oldNum.Substring(oldNum.Length - len, 1))
            {
                case ".": upperA = "圆"; break;
                case "0": upperA = "零"; break;
                case "1": upperA = "壹"; break;
                case "2": upperA = "贰"; break;
                case "3": upperA = "叁"; break;
                case "4": upperA = "肆"; break;
                case "5": upperA = "伍"; break;
                case "6": upperA = "陆"; break;
                case "7": upperA = "柒"; break;
                case "8": upperA = "捌"; break;
                case "9": upperA = "玖"; break;
            }
            //将数值后添加单位
            switch (len)
            {
                case 1: upperA = upperA + "分"; break;
                case 2: upperA = upperA + "角"; break;
                case 3: upperA = upperA + ""; break;
                case 4: upperA = upperA + ""; break;
                case 5: upperA = upperA + "拾"; break;
                case 6: upperA = upperA + "佰"; break;
                case 7: upperA = upperA + "仟"; break;
                case 8: upperA = upperA + "萬"; break;
                case 9: upperA = upperA + "拾"; break;
                case 10: upperA = upperA + "佰"; break;
                case 11: upperA = upperA + "仟"; break;
                case 12: upperA = upperA + "億"; break;
                case 13: upperA = upperA + "拾"; break;
                case 14: upperA = upperA + "佰"; break;
                case 15: upperA = upperA + "仟"; break;
                case 16: upperA = upperA + "萬"; break;
                default: upperA += ""; break;
            }
            upper = upperA + upper;
            len++;
        }
        upper = upper.Replace("零拾", "零");// 处理101   壹佰零拾壹
        upper = upper.Replace("零佰", "零");// 处理1001   壹仟零佰零拾壹
        upper = upper.Replace("零仟", "零");// 处理10001   壹萬零仟零佰零拾壹
        upper = upper.Replace("零零零", "零");//经过上面处理可能会出现  例如10001 就会是   壹萬零零零壹
        upper = upper.Replace("零零", "零");//经过上面处理可能会出现  例如1001 就会是   壹仟零零壹
        upper = upper.Replace("零角零分", "整");//1001.00 会出现 零角零分
        upper = upper.Replace("零分", "整");//1001.50  会出现 零分
        upper = upper.Replace("零角", "零");//1001.05  会出现 零角
        upper = upper.Replace("零億零萬零圆", "億圆");//
        upper = upper.Replace("億零萬零圆", "億圆");
        upper = upper.Replace("零億零萬", "億");//10000000001   壹佰零億零萬零壹圆整
        upper = upper.Replace("零萬零圆", "萬圆");
        upper = upper.Replace("零億", "億");
        upper = upper.Replace("零萬", "萬");
        upper = upper.Replace("零圆", "圆");
        upper = upper.Replace("億萬", "億");
        upper = upper.Replace("零零", "零");
        //对零圆以下处理
        if (upper.Substring(0, 1) == "圆")
        { upper = upper.Substring(1, upper.Length - 1); }
        if (upper.Substring(0, 1) == "角")
        { upper = upper.Substring(1, upper.Length - 1); }
        if (upper.Substring(0, 1) == "分")
        { upper = upper.Substring(1, upper.Length - 1); }
        if (upper.Substring(0, 1) == "零")
        { upper = upper.Substring(1, upper.Length - 1); }
        if (upper.Substring(0, 1) == "整")
        { upper = "零圆整"; }
        if (isTrue)
        { upper = "负" + upper; }
        return upper;
    }


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值