zoukankan      html  css  js  c++  java
  • 中文数字大小写转阿拉伯数字

    目前只支持”万“以下的转换。

    private static string GetNumber4Chinese(string str)
            {
                string istr = "0";
                string cstr = string.Empty;
                string nstr = string.Empty;
                for (int i = 0; i < str.Length; i++)
                {
                    cstr = str.Substring(i, 1);
                    nstr = (i < str.Length - 1) ? str.Substring(i + 1, 1) : "个";

                    switch (cstr)
                    {
                        case "一":
                        case "壹":
                            istr = (Convert.ToInt64(istr) + 1 * GetBaseNumber4ChineseUnit(nstr)).ToString();
                            break;
                        case "二":
                        case "两":
                        case "贰":
                            istr = (Convert.ToInt64(istr) + 2 * GetBaseNumber4ChineseUnit(nstr)).ToString();
                            break;
                        case "三":
                        case "叁":
                            istr = (Convert.ToInt64(istr) + 3 * GetBaseNumber4ChineseUnit(nstr)).ToString();
                            break;
                        case "四":
                        case "肆":
                            istr = (Convert.ToInt64(istr) + 4 * GetBaseNumber4ChineseUnit(nstr)).ToString();
                            break;
                        case "五":
                        case "伍":
                            istr = (Convert.ToInt64(istr) + 5 * GetBaseNumber4ChineseUnit(nstr)).ToString();
                            break;
                        case "六":
                        case "陆":
                            istr = (Convert.ToInt64(istr) + 6 * GetBaseNumber4ChineseUnit(nstr)).ToString();
                            break;
                        case "七":
                        case "柒":
                            istr = (Convert.ToInt64(istr) + 7 * GetBaseNumber4ChineseUnit(nstr)).ToString();
                            break;
                        case "八":
                        case "捌":
                            istr = (Convert.ToInt64(istr) + 8 * GetBaseNumber4ChineseUnit(nstr)).ToString();
                            break;
                        case "九":
                        case "玖":
                            istr = (Convert.ToInt64(istr) + 9 * GetBaseNumber4ChineseUnit(nstr)).ToString();
                            break;
                        default:
                            if (str.Length < 2)
                            {
                                istr = GetBaseNumber4ChineseUnit(cstr).ToString();
                            }
                            else if (str.Length == 2 && (str.StartsWith("十") || str.StartsWith("拾")))
                            {
                                return (10 + Convert.ToInt64(GetNumber4Chinese(nstr))).ToString();
                            }
                            break;
                    }
                }
                return istr;
            }

            private static int GetBaseNumber4ChineseUnit(string str)
            {
                int ibase = 0;
                string cstr = "0";
                for (int i = 0; i < str.Length; i++)
                {
                    cstr = str.Substring(i, 1);
                    switch (cstr)
                    {
                        case "万":
                            ibase = 10000;
                            break;
                        case "千":
                            ibase = 1000;
                            break;
                        case "百":
                            ibase = 100;
                            break;
                        case "十":
                            ibase = 10;
                            break;
                        case "个":
                            ibase = 1;
                            break;
                    }
                }
                return ibase;
            }

  • 相关阅读:
    bzoj 1407: [Noi2002]Savage【扩展欧几里得+中国剩余定理】
    bzoj 2142: 礼物【中国剩余定理+组合数学】
    BSGS
    bzoj 2242: [SDOI2011]计算器【扩展欧几里得+快速幂+BSGS】
    bzoj 3122: [Sdoi2013]随机数生成器【BSGS】
    bzoj 3239: Discrete Logging && 2480: Spoj3105 Mod【BSGS】
    bzoj 1180: [CROATIAN2009]OTOCI【LCT】
    51nod 1122 机器人走方格 V4 【矩阵快速幂】
    51nod 1120 机器人走方格 V3 【卡特兰数+卢卡斯定理+组合数】
    51nod 1119 机器人走方格 V2 【组合数学】
  • 原文地址:https://www.cnblogs.com/fery/p/3255010.html
Copyright © 2011-2022 走看看