在C#中將金額轉換成中文大寫金額


具體代碼如下:

    /// <summary>
    /// 金額轉換成中文大寫金額
    /// </summary>
    /// <param name="LowerMoney">eg:10.74</param>
    /// <returns></returns>
    public static string MoneyToUpper(string LowerMoney)
    {
        string functionReturnValue = null;
        bool IsNegative = false; // 是否是負數
        if (LowerMoney.Trim().Substring(0, 1) == "-")
        {
            // 是負數則先轉為正數
            LowerMoney = LowerMoney.Trim().Remove(0, 1);
            IsNegative = true;
        }
        string strLower = null;
        string strUpart = null;
        string strUpper = null;
        int iTemp = 0;
        // 保留兩位小數 123.489→123.49  123.4→123.4
        LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString();
        if (LowerMoney.IndexOf(".") > 0)
        {
            if (LowerMoney.IndexOf(".") == LowerMoney.Length - 2)
            {
                LowerMoney = LowerMoney + "0";
            }
        }
        else
        {
            LowerMoney = LowerMoney + ".00";
        }
        strLower = LowerMoney;
        iTemp = 1;
        strUpper = "";
        while (iTemp <= strLower.Length)
        {
            switch (strLower.Substring(strLower.Length - iTemp, 1))
            {
                case ".":
                    strUpart = "";
                    break;
                case "0":
                    strUpart = "";
                    break;
                case "1":
                    strUpart = "";
                    break;
                case "2":
                    strUpart = "";
                    break;
                case "3":
                    strUpart = "";
                    break;
                case "4":
                    strUpart = "";
                    break;
                case "5":
                    strUpart = "";
                    break;
                case "6":
                    strUpart = "";
                    break;
                case "7":
                    strUpart = "";
                    break;
                case "8":
                    strUpart = "";
                    break;
                case "9":
                    strUpart = "";
                    break;
            }

            switch (iTemp)
            {
                case 1:
                    strUpart = strUpart + "";
                    break;
                case 2:
                    strUpart = strUpart + "";
                    break;
                case 3:
                    strUpart = strUpart + "";
                    break;
                case 4:
                    strUpart = strUpart + "";
                    break;
                case 5:
                    strUpart = strUpart + "";
                    break;
                case 6:
                    strUpart = strUpart + "";
                    break;
                case 7:
                    strUpart = strUpart + "";
                    break;
                case 8:
                    strUpart = strUpart + "";
                    break;
                case 9:
                    strUpart = strUpart + "";
                    break;
                case 10:
                    strUpart = strUpart + "";
                    break;
                case 11:
                    strUpart = strUpart + "";
                    break;
                case 12:
                    strUpart = strUpart + "";
                    break;
                case 13:
                    strUpart = strUpart + "";
                    break;
                case 14:
                    strUpart = strUpart + "";
                    break;
                case 15:
                    strUpart = strUpart + "";
                    break;
                case 16:
                    strUpart = strUpart + "";
                    break;
                default:
                    strUpart = strUpart + "";
                    break;
            }

            strUpper = strUpart + strUpper;
            iTemp = iTemp + 1;
        }

        strUpper = strUpper.Replace("零拾", "");
        strUpper = strUpper.Replace("零佰", "");
        strUpper = strUpper.Replace("零仟", "");
        strUpper = strUpper.Replace("零零零", "");
        strUpper = strUpper.Replace("零零", "");
        strUpper = strUpper.Replace("零角零分", "");
        strUpper = strUpper.Replace("零分", "");
        strUpper = strUpper.Replace("零角", "");
        strUpper = strUpper.Replace("零億零萬零圓", "億圓");
        strUpper = strUpper.Replace("億零萬零圓", "億圓");
        strUpper = strUpper.Replace("零億零萬", "");
        strUpper = strUpper.Replace("零萬零圓", "萬圓");
        strUpper = strUpper.Replace("零億", "");
        strUpper = strUpper.Replace("零萬", "");
        strUpper = strUpper.Replace("零圓", "");
        strUpper = strUpper.Replace("零零", "");

        // 對壹圓以下的金額的處理
        if (strUpper.Substring(0, 1) == "")
        {
            strUpper = strUpper.Substring(1, strUpper.Length - 1);
        }
        if (strUpper.Substring(0, 1) == "")
        {
            strUpper = strUpper.Substring(1, strUpper.Length - 1);
        }
        if (strUpper.Substring(0, 1) == "")
        {
            strUpper = strUpper.Substring(1, strUpper.Length - 1);
        }
        if (strUpper.Substring(0, 1) == "")
        {
            strUpper = strUpper.Substring(1, strUpper.Length - 1);
        }
        if (strUpper.Substring(0, 1) == "")
        {
            strUpper = "零圓整";
        }
        functionReturnValue = strUpper;

        if (IsNegative == true)
        {
            return "" + functionReturnValue;
        }
        else
        {
            return functionReturnValue;
        }
    }

使用:

Console.WriteLine(MoneyToUpper("20.22"));

 結果:

  貳拾圓貳角貳分


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM