欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)貨幣金額數(shù)字轉(zhuǎn)大寫(xiě)漢字

 更新時(shí)間:2024年01月18日 09:27:52   作者:wenchm  
這篇文章主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)貨幣金額數(shù)字轉(zhuǎn)大寫(xiě)漢字功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、對(duì)輸入數(shù)字的處理

用正則表達(dá)式對(duì)輸入的數(shù)字判斷是否符合貨幣格式,小數(shù)點(diǎn)前的數(shù)字串的長(zhǎng)度是否不大于13。

二、源碼

1、Main()

// 貨幣金額小寫(xiě)數(shù)字轉(zhuǎn)大寫(xiě)漢字
// 小數(shù)點(diǎn)前數(shù)字長(zhǎng)度<=13,即不超過(guò)十億
using System.Text.RegularExpressions;
 
namespace NumtoUpperChinese
{
    partial class Program
    {
        /// <summary>
        /// 判斷輸入的是否貨幣格式,是否小數(shù)點(diǎn)前<=13,
        /// </summary>
        /// <param name="args"></param>
        private static void Main(string[] args)
        {
            ArgumentNullException.ThrowIfNull(args);
            Console.WriteLine("請(qǐng)輸入要判斷的字符串(貨幣格式)");
            string input = Console.ReadLine()!.ToString();
            
            if (input!="") 
            {
                bool isValidFormat = IsValidCurrencyFormat(input);
                if (isValidFormat)
                {
                    Console.WriteLine(NumtoUpper.MoneyToUpper(input));
                }
                else
                {
                    Console.WriteLine("輸入的貨幣格式無(wú)效");
                }
 
            }
            else
            {
                Console.WriteLine("輸入數(shù)字不能空,請(qǐng)重新輸入!", "提示");
            }
        }
        static bool IsValidCurrencyFormat(string input)
        {
            Regex regex = MyRegex();      // 定義正則表達(dá)式模式
            return regex.IsMatch(input);    // 返回匹配結(jié)果
        }
 
        [GeneratedRegex(@"^\d{0,13}(\.\d+)?$")]
        private static partial Regex MyRegex();
    }
}
//運(yùn)行結(jié)果:
/*
請(qǐng)輸入要判斷的字符串(貨幣格式)
9999999999999.99
玖萬(wàn)玖仟玖佰玖拾玖億玖仟玖佰玖拾玖萬(wàn)玖仟玖佰玖拾玖圓玖角玖分
 */

2.類(lèi)庫(kù)

// 類(lèi)庫(kù)
namespace NumtoUpperChinese
{
    internal static class NumtoUpper
    {
        /// <summary>
        /// 金額轉(zhuǎn)換成中文大寫(xiě)金額
        /// </summary>
        /// <param name="LowerMoney">eg:10.74</param>
        /// <returns></returns>
        public static string MoneyToUpper(string LowerMoney)
        {           
            string? ReturnValue;
            bool IsNegative = false; // 是否是負(fù)數(shù)
            if (LowerMoney.Trim()[..1] == "-")
            {
                // 是負(fù)數(shù)則先轉(zhuǎn)為正數(shù)
                LowerMoney = LowerMoney.Trim().Remove(0, 1);
                IsNegative = true;
            }
            string? strLower;
            string? strUpart = null;
            string? strUpper;
            int iTemp;
            // 保留兩位小數(shù) 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 += ('0');
                }
            }
            else
            {
                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;
                }
 
                strUpart = iTemp switch
                {
                    1 => strUpart + "分",
                    2 => strUpart + "角",
                    3 => strUpart + "",
                    4 => strUpart + "",
                    5 => strUpart + "拾",
                    6 => strUpart + "佰",
                    7 => strUpart + "仟",
                    8 => strUpart + "萬(wàn)",
                    9 => strUpart + "拾",
                    10 => strUpart + "佰",
                    11 => strUpart + "仟",
                    12 => strUpart + "億",
                    13 => strUpart + "拾",
                    14 => strUpart + "佰",
                    15 => strUpart + "仟",
                    16 => strUpart + "萬(wàn)",
                    _ => strUpart + "",
                };
                strUpper = strUpart + strUpper;
                iTemp++;
            }
 
            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("零億零萬(wàn)零圓", "億圓");
            strUpper = strUpper.Replace("億零萬(wàn)零圓", "億圓");
            strUpper = strUpper.Replace("零億零萬(wàn)", "億");
            strUpper = strUpper.Replace("零萬(wàn)零圓", "萬(wàn)圓");
            strUpper = strUpper.Replace("零億", "億");
            strUpper = strUpper.Replace("零萬(wàn)", "萬(wàn)");
            strUpper = strUpper.Replace("零圓", "圓");
            strUpper = strUpper.Replace("零零", "零");
 
            // 對(duì)壹圓以下的金額的處理
            if (strUpper[..1] == "圓")
            {
                strUpper = strUpper[1..];
            }
            if (strUpper[..1] == "零")
            {
                strUpper = strUpper[1..];
            }
            if (strUpper[..1] == "角")
            {
                strUpper = strUpper[1..];
            }
            if (strUpper[..1] == "分")
            {
                strUpper = strUpper[1..];
            }
            if (strUpper[..1] == "整")
            {
                strUpper = "零圓整";
            }
            ReturnValue = strUpper;
 
            if (IsNegative == true)
            {
                return "負(fù)" + ReturnValue;
            }
            else
            {
                return ReturnValue;
            }
        }
    }
}

以上就是C#實(shí)現(xiàn)貨幣金額數(shù)字轉(zhuǎn)大寫(xiě)漢字的詳細(xì)內(nèi)容,更多關(guān)于C#數(shù)字轉(zhuǎn)大寫(xiě)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#并行編程之信號(hào)量

    C#并行編程之信號(hào)量

    這篇文章介紹了C#并行編程之信號(hào)量,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#控制臺(tái)程序使用Log4net日志組件詳解

    C#控制臺(tái)程序使用Log4net日志組件詳解

    這篇文章主要為大家詳細(xì)介紹了C#控制臺(tái)程序使用Log4net日志組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • C#實(shí)現(xiàn)SMTP服務(wù)發(fā)送郵件的示例代碼

    C#實(shí)現(xiàn)SMTP服務(wù)發(fā)送郵件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)SMTP服務(wù)發(fā)送郵件的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • c#winform窗口頁(yè)面一打開(kāi)就加載的實(shí)現(xiàn)方式

    c#winform窗口頁(yè)面一打開(kāi)就加載的實(shí)現(xiàn)方式

    這篇文章主要介紹了c#winform窗口頁(yè)面一打開(kāi)就加載的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • C#使用DirectX.DirectSound播放語(yǔ)音

    C#使用DirectX.DirectSound播放語(yǔ)音

    這篇文章主要為大家詳細(xì)介紹了C#使用DirectX.DirectSound播放語(yǔ)音,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Unity實(shí)現(xiàn)俄羅斯方塊(二)

    Unity實(shí)現(xiàn)俄羅斯方塊(二)

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)俄羅斯方塊的第一部分代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C# using()的使用方法

    C# using()的使用方法

    本文主要介紹了C# using()的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C#操作非持久化內(nèi)存映射文件詳解

    C#操作非持久化內(nèi)存映射文件詳解

    多個(gè)進(jìn)程之間,通過(guò)操作未映射到磁盤(pán)上現(xiàn)有文件的內(nèi)存映射文件,可以實(shí)現(xiàn)數(shù)據(jù)共享和類(lèi)似進(jìn)程間通訊的功能,下面我們就來(lái)學(xué)習(xí)一下C#如何操作非持久化內(nèi)存映射文件的吧
    2023-12-12
  • 解析abstract與override究竟可不可以同時(shí)使用

    解析abstract與override究竟可不可以同時(shí)使用

    本篇文章是對(duì)abstract與override究竟可不可以同時(shí)使用進(jìn)行了詳細(xì)分析介紹,需要的朋友參考下
    2013-05-05
  • C#中類(lèi)的使用教程詳解

    C#中類(lèi)的使用教程詳解

    在對(duì)類(lèi)訪問(wèn)使用時(shí),常用到的有訪問(wèn)類(lèi)的成員、方法。本文就將通過(guò)示例為大家詳細(xì)講講C#中類(lèi)的使用教程,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2022-07-07

最新評(píng)論