• 数字转换成中文大写带单位


    public class NumberConvert
        {
            /// <summary>
            /// 转换数字
            /// </summary>
            protected static long CharToNumber(char c)
            {
                switch (c)
                {
                    case '': return 1;
                    case '': return 2;
                    case '': return 3;
                    case '': return 4;
                    case '': return 5;
                    case '': return 6;
                    case '': return 7;
                    case '': return 8;
                    case '': return 9;
                    case '': return 0;
    
                    case '': return 1;
                    case '': return 2;
                    case '': return 3;
                    case '': return 4;
                    case '': return 5;
                    case '': return 6;
                    case '': return 7;
                    case '': return 8;
                    case '': return 9;
    
                    default: return -1;
                }
            }
    
            /// <summary>
            /// 转换单位
            /// </summary>
            protected static long CharToUnit(char c)
            {
                switch (c)
                {
                    case '': return 10;
                    case '': return 100;
                    case '': return 1000;
                    case '': return 10000;
                    case '亿': return 100000000;
    
                    case '': return 10;
                    case '': return 100;
                    case '': return 1000;
    
                    default: return 1;
                }
            }
    
            /// <summary>
            /// 将中文数字转换阿拉伯数字
            /// </summary>
            /// <param name="cnum">汉字数字</param>
            /// <returns>长整型阿拉伯数字</returns>
            public static long ParseCnToInt(string cnum)
            {
                cnum = Regex.Replace(cnum, "\s+", "");
                long firstUnit = 1;//一级单位                
                long secondUnit = 1;//二级单位 
                long tmpUnit = 1;//临时单位变量
                long result = 0;//结果
                for (int i = cnum.Length - 1; i > -1; --i)//从低到高位依次处理
                {
                    tmpUnit = CharToUnit(cnum[i]);//取出此位对应的单位
                    if (tmpUnit > firstUnit)//判断此位是数字还是单位
                    {
                        firstUnit = tmpUnit;//是的话就赋值,以备下次循环使用
                        secondUnit = 1;
                        if (i == 0)//处理如果是"十","十一"这样的开头的
                        {
                            result += firstUnit * secondUnit;
                        }
                        continue;//结束本次循环
                    }
                    else if (tmpUnit > secondUnit)
                    {
                        secondUnit = tmpUnit;
                        continue;
                    }
                    result += firstUnit * secondUnit * CharToNumber(cnum[i]);//如果是数字,则和单位想乘然后存到结果里
                }
                return result;
            }
        }
  • 相关阅读:
    笔记——文档在线阅读的解决方案(未完待续)
    杂记之web篇
    对针对接口编程的理解
    汇编笔记之 ret 、retf和call
    electron桌面应用
    wepack打包时出错不压缩代码及使用es7(async await)新语法问题
    npm install 时发生错误
    create-react-app 后使用babel/polyfill
    webpack3.x--react,jsx多页配置
    webpack--打包scss
  • 原文地址:https://www.cnblogs.com/yy15611/p/13370624.html
Copyright © 2020-2023  润新知