亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現人民幣大寫轉換示例代碼

2020-01-24 03:01:44
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

/// <summary>
/// 人民幣大寫
/// </summary>
/// <param name="input">待轉換輸入</param>
/// <param name="prefix">需要添加人民幣前綴</param>
/// <exception cref="ArgumentException" />
/// <returns>轉換后的結果</returns>
public static string ToCapital(this string input, bool prefix = false) {

    #region Step1 輸入有效性驗證

    if (!Regex.IsMatch(input, @"(?<=-|^)/d*/.?/d*$"))
        throw new ArgumentException("錯誤的輸入金額!");

    if (Regex.IsMatch(input, @"^/d{25,}"))
        throw new ArgumentException("輸入數據太大無法轉換!");

    #endregion

    #region Step2 格式化為中間字符串

    var positionDic = new Dictionary<int, string> {
        {0,"F"},{1,"J"},{2,"."},{3,"S"},{4,"B"},{5,"Q"},{6,"W"},{7,"SW"},{8,"BW"},{9,"QW"},
        {10,"Y"},{11,"SY"},{12,"BY"},{13,"QY"},{14,"WY"},{15,"SWY"},{16,"BWY"},{17,"QWY"},{18,"YY"},
        {19,"SYY"},{20,"BYY"},{21,"QYY"},{22,"WYY"},{23,"SWYY"},{24,"BWYY"},{25,"QWYY"}               
    };

    input = Regex.Replace(input, @"^/.", "0.");

    var integerPart = Regex.Replace(input, @"^-|/..*$", "");
    var _matchDecimal = Regex.Match(input, @"/./d*$", RegexOptions.None);
    var decimalPart = Regex.Replace(_matchDecimal.Success ? Convert.ToDouble(_matchDecimal.Value).ToString("0.00") : "00", @"0/.", "");

    var processStack = new Stack<string>();
    var charsArray = (integerPart + decimalPart).Reverse<char>();
    for (int i = 0; i < charsArray.Count(); i++) {
        processStack.Push(string.Format("{0}{1}", charsArray.ElementAt(i), positionDic[i]));
    }

    //符號處理 keleyi.com
    if (Regex.IsMatch(input, "^-", RegexOptions.None)) {
        processStack.Push("-");
    }
    if (prefix) {
        processStack.Push("¥");
    }

    var process = string.Empty;
    while (processStack.Count > 0) {
        process += processStack.Pop();
    }
    //語義處理模式隊列
    Queue<Tuple<string, string, MatchEvaluator>> patterns = new Queue<Tuple<string, string, MatchEvaluator>>();
    var patternBuilder = new StringBuilder();
    for (int i = 3; i < positionDic.Count; i++) {
        patternBuilder.AppendFormat("{0}{1}", (i == 3 ? "(0(?:" : "") + positionDic[i], i == positionDic.Count - 1 ? ")+?)+" : "|");
    }
    patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(patternBuilder.ToString(), "0", null));
    patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"(?:/d+(?:QW|BW|SW|W|Q|B|S)?/d?YY)+", null, m => m.Value.Replace("YY", "") + "YY"));
    patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"(?:/d+(?:QW|BW|SW|W|Q|B|S)?/d?Y)+", null, m => m.Value.Replace("Y", "") + "Y"));
    patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"(?:/d+(?:Q|B|S)?/d?W)+", null, m => m.Value.Replace("W", "") + "W"));
    patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"(?!^)0+/.", ".", null));
    patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"^0/.0J|^0/.", "", null));
    patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>("0J|0F", "0", null));
    patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>("J0?$", "JZ", null));
    patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"/.$|/.0+$", ".Z", null));
    patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"^0+$|^[^.]{0}$", "0.Z", null));

    while (patterns.Count > 0) {
        var pattern = patterns.Dequeue();
        if (pattern.Item3 != null) {
            process = Regex.Replace(process, pattern.Item1, pattern.Item3);
        }
        else {
            process = Regex.Replace(process, pattern.Item1, pattern.Item2);
        }
    }

    #endregion

    #region Step3 翻譯中間字符串
    StringBuilder result = new StringBuilder();
    var translatorDic = new Dictionary<char, string> {
        {'0',"零"},{'1',"壹"},{'2',"貳"},{'3',"叁"},{'4',"肆"},{'5',"伍"},{'6',"陸"},{'7',"柒"},{'8',"捌"},{'9',"玖"},
        {'S',"拾"},{'B',"佰"},{'Q',"仟"},{'W',"亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

国产精品一区二区三区久久久| 精品久久中文字幕| 亚洲午夜未满十八勿入免费观看全集| 国产精品爽爽爽爽爽爽在线观看| 精品国产一区二区三区久久狼黑人| 91夜夜揉人人捏人人添红杏| 久久好看免费视频| 久久理论片午夜琪琪电影网| 久久久亚洲网站| 97香蕉超级碰碰久久免费的优势| 亚洲第一视频在线观看| 亚洲天天在线日亚洲洲精| 中文精品99久久国产香蕉| 成人中文字幕在线观看| 日韩av免费网站| 91禁国产网站| 亚洲xxxxx性| 久久久影视精品| 色噜噜国产精品视频一区二区| 海角国产乱辈乱精品视频| 亚洲精品资源美女情侣酒店| 欧美激情国产日韩精品一区18| 精品少妇v888av| 日韩av在线影院| 日韩欧美综合在线视频| 韩国一区二区电影| 国产婷婷色综合av蜜臀av| 亚洲女人初尝黑人巨大| 国产精品一二区| 国产一区二区精品丝袜| 久久久亚洲国产| 亚洲成人黄色在线观看| 国产成人在线一区二区| 欧美日韩成人在线视频| 久久久久久亚洲精品中文字幕| 97久久久免费福利网址| 日韩av有码在线| 国内精品一区二区三区四区| 欧美日韩日本国产| 久久免费成人精品视频| 91精品视频免费观看| 国产精品精品国产| 久久91亚洲精品中文字幕奶水| 国产精品久久久久久久久男| 91久热免费在线视频| 国产精品日韩在线一区| 日韩精品在线观看一区二区| 国产精品久久电影观看| 国产精品吹潮在线观看| 欧美精品免费看| 91sa在线看| 久久综合亚洲社区| 欧美日韩精品在线观看| 欧美成人激情视频免费观看| 欧美交受高潮1| 91精品久久久久久久久久久久久久| 92看片淫黄大片看国产片| 色噜噜狠狠狠综合曰曰曰88av| 欧美不卡视频一区发布| 91欧美精品午夜性色福利在线| 国产一区二区视频在线观看| 欧美乱大交做爰xxxⅹ性3| 国产a∨精品一区二区三区不卡| 久久久免费观看| 日韩精品中文字幕在线| 国产伦精品免费视频| 综合av色偷偷网| 久久九九免费视频| 中文字幕日本精品| 欧美一区二区三区……| 久久91超碰青草是什么| 欧洲一区二区视频| 欧美在线免费视频| 91sa在线看| 久久久999精品| 亚洲天堂免费在线| 久久久视频精品| 亚洲一区二区三区成人在线视频精品| 久久国产天堂福利天堂| 91高清在线免费观看| 亚洲日本欧美日韩高观看| 影音先锋欧美精品| 亚洲性xxxx| 亚洲肉体裸体xxxx137| 欧美大秀在线观看| 日韩av成人在线观看| 国产精品视频大全| 在线看福利67194| 久久伊人91精品综合网站| 日本久久亚洲电影| 国产精品∨欧美精品v日韩精品| 久久午夜a级毛片| 91在线视频一区| 国产精品久久久久91| 色青青草原桃花久久综合| 成人免费午夜电影| 久久在线观看视频| 久久久视频免费观看| 欧美成人免费一级人片100| 国产精品旅馆在线| 欧美激情久久久| 亚洲国产小视频在线观看| 亚洲www永久成人夜色| 色午夜这里只有精品| 在线播放精品一区二区三区| 亚洲国产欧美一区二区三区同亚洲| 国产精品美女视频网站| 欧美裸体xxxx极品少妇软件| 久久精品国产清自在天天线| 国产精品久久久久久婷婷天堂| 777国产偷窥盗摄精品视频| 日韩中文字幕在线观看| www.日本久久久久com.| 亚洲精品视频中文字幕| 国产午夜精品美女视频明星a级| 欧美日韩一区二区在线播放| 精品国偷自产在线视频| 日产精品久久久一区二区福利| 亚洲天堂成人在线视频| 久久99青青精品免费观看| 91美女片黄在线观| 性欧美亚洲xxxx乳在线观看| 精品一区二区三区四区| 欧美巨猛xxxx猛交黑人97人| 国产一区二区三区在线看| 国产日韩在线精品av| 色噜噜狠狠狠综合曰曰曰88av| 免费99精品国产自在在线| 欧美电影在线免费观看网站| 国产精品专区第二| 久久精品国亚洲| 国产99久久久欧美黑人| 久久久久免费精品国产| 久久久久久中文字幕| 亚洲国产精品女人久久久| 91在线观看免费高清| 97国产精品视频人人做人人爱| 日韩美女视频免费看| 亚洲奶大毛多的老太婆| 亚洲精品中文字幕av| 日韩av在线电影网| 日韩欧美在线视频日韩欧美在线视频| 亚洲在线免费看| 91精品在线影院| 欧美电影在线观看| 成人激情在线观看| 亚洲美女av在线| 久久亚洲精品视频| 欧美成人在线网站| 国产视频精品一区二区三区| 国产999在线观看| 久久久久久久亚洲精品| 亚洲精品久久视频| 成人亚洲激情网| www.xxxx欧美| 国产精品久久网| 久久天天躁狠狠躁夜夜av| 亚洲肉体裸体xxxx137| 日韩欧美在线免费| 91超碰中文字幕久久精品| 日韩欧美精品在线观看| 欧美成人小视频| 欧美疯狂做受xxxx高潮| 中文字幕精品一区二区精品|