首页 > 编程语言 >C# 数字转大写汉字

C# 数字转大写汉字

时间:2022-12-20 11:56:27浏览次数:40  
标签:case string C# str2 汉字 str3 int ToString 大写

1.数字转换成汉字大写

public string NumToChinese(string x) { //数字转换为中文后的数组 string[] P_array_num = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; //为数字位数建立一个位数组 string[] P_array_digit = new string[] { "", "拾", "佰", "仟" }; //为数字单位建立一个单位数组 string[] P_array_units = new string[] { "", "万", "亿", "万亿" }; string P_str_returnValue = ""; //返回值 int finger = 0; //字符位置指针 int P_int_m = x.Length % 4; //取模 int P_int_k = 0; if (P_int_m > 0) P_int_k = x.Length / 4 + 1; else P_int_k = x.Length / 4; //外层循环,四位一组,每组最后加上单位: ",万亿,",",亿,",",万," for (int i = P_int_k; i > 0; i--) { int P_int_L = 4; if (i == P_int_k && P_int_m != 0) P_int_L = P_int_m; //得到一组四位数 string four = x.Substring(finger, P_int_L); int P_int_l = four.Length; //内层循环在该组中的每一位数上循环 for (int j = 0; j < P_int_l; j++) { //处理组中的每一位数加上所在的位 int n = Convert.ToInt32(four.Substring(j, 1)); if (n == 0) { if (j < P_int_l - 1 && Convert.ToInt32(four.Substring(j + 1, 1)) > 0 && !P_str_returnValue.EndsWith(P_array_num[n])) P_str_returnValue += P_array_num[n]; } else { if (!(n == 1 && (P_str_returnValue.EndsWith(P_array_num[0]) | P_str_returnValue.Length == 0) && j == P_int_l - 2)) P_str_returnValue += P_array_num[n]; P_str_returnValue += P_array_digit[P_int_l - j - 1]; } } finger += P_int_L; //每组最后加上一个单位:",万,",",亿," 等 if (i < P_int_k) //如果不是最高位的一组 { if (Convert.ToInt32(four) != 0) //如果所有4位不全是0则加上单位",万,",",亿,"等 P_str_returnValue += P_array_units[i - 1]; } else { //处理最高位的一组,最后必须加上单位 P_str_returnValue += P_array_units[i - 1]; } } return P_str_returnValue; }

2.数值转换成汉字大写

public static string GetChinaMoney(decimal money)
        {
            string[] strArray;
            string str = "";
            string str2 = "";
            string str3 = money.ToString("0.00");
            switch (str3.Trim().Length)
            {
                case 4:
                    strArray = new string[] { str3[0].ToString(), "y", str3[2].ToString(), "j", str3[3].ToString(), "f" };
                    str = string.Concat(strArray);
                    break;

                case 5:
                    strArray = new string[] { str3[0].ToString(), "s", str3[1].ToString(), "y", str3[3].ToString(), "j", str3[4].ToString(), "f" };
                    str = string.Concat(strArray);
                    break;

                case 6:
                    strArray = new string[] { str3[0].ToString(), "b", str3[1].ToString(), "s", str3[2].ToString(), "y", str3[4].ToString(), "j", str3[5].ToString(), "f" };
                    str = string.Concat(strArray);
                    break;

                case 7:
                    strArray = new string[] { str3[0].ToString(), "q", str3[1].ToString(), "b", str3[2].ToString(), "s", str3[3].ToString(), "y", str3[5].ToString(), "j", str3[6].ToString(), "f" };
                    str = string.Concat(strArray);
                    break;

                case 8:
                    strArray = new string[] { str3[0].ToString(), "w", str3[1].ToString(), "q", str3[2].ToString(), "b", str3[3].ToString(), "s", str3[4].ToString(), "y", str3[6].ToString(), "j", str3[7].ToString(), "f" };
                    str = string.Concat(strArray);
                    break;

                case 9:
                    strArray = new string[] { str3[0].ToString(), "s", str3[1].ToString(), "w", str3[2].ToString(), "q", str3[3].ToString(), "b", str3[4].ToString(), "s", str3[5].ToString(), "y", str3[7].ToString(), "j", str3[8].ToString(), "f" };
                    str = string.Concat(strArray);
                    break;

                case 10:
                    strArray = new string[] { 
                        str3[0].ToString(), "b", str3[1].ToString(), "s", str3[2].ToString(), "w", str3[3].ToString(), "q", str3[4].ToString(), "b", str3[5].ToString(), "s", str3[6].ToString(), "y", str3[8].ToString(), "j", 
                        str3[9].ToString(), "f"
                     };
                    str = string.Concat(strArray);
                    break;

                case 11:
                    strArray = new string[] { 
                        str3[0].ToString(), "q", str3[1].ToString(), "b", str3[2].ToString(), "s", str3[3].ToString(), "w", str3[4].ToString(), "q", str3[5].ToString(), "b", str3[6].ToString(), "s", str3[7].ToString(), "y", 
                        str3[9].ToString(), "j", str3[10].ToString(), "f"
                     };
                    str = string.Concat(strArray);
                    break;

                case 12:
                    strArray = new string[] { 
                        str3[0].ToString(), "m", str3[1].ToString(), "q", str3[2].ToString(), "b", str3[3].ToString(), "s", str3[4].ToString(), "w", str3[5].ToString(), "q", str3[6].ToString(), "b", str3[7].ToString(), "s", 
                        str3[8].ToString(), "y", str3[10].ToString(), "j", str3[11].ToString(), "f"
                     };
                    str = string.Concat(strArray);
                    break;
            }
            for (int i = 0; i < str.Trim().Length; i++)
            {
                switch (str[i])
                {
                    case '0':
                        str2 = str2 + "零";
                        break;

                    case '1':
                        str2 = str2 + "壹";
                        break;

                    case '2':
                        str2 = str2 + "贰";
                        break;

                    case '3':
                        str2 = str2 + "叁";
                        break;

                    case '4':
                        str2 = str2 + "肆";
                        break;

                    case '5':
                        str2 = str2 + "伍";
                        break;

                    case '6':
                        str2 = str2 + "陆";
                        break;

                    case '7':
                        str2 = str2 + "柒";
                        break;

                    case '8':
                        str2 = str2 + "捌";
                        break;

                    case '9':
                        str2 = str2 + "玖";
                        break;

                    case 'b':
                        str2 = str2 + "佰";
                        break;

                    case 'f':
                        str2 = str2 + "分";
                        break;

                    case 'j':
                        str2 = str2 + "角";
                        break;

                    case 'm':
                        str2 = str2 + "亿";
                        break;

                    case 'q':
                        str2 = str2 + "仟";
                        break;

                    case 's':
                        str2 = str2 + "拾";
                        break;

                    case 'w':
                        str2 = str2 + "万";
                        break;

                    case 'y':
                        str2 = str2 + "元";
                        break;
                }
            }
            return str2;
        }

标签:case,string,C#,str2,汉字,str3,int,ToString,大写
From: https://www.cnblogs.com/SmallChen/p/16993873.html

相关文章

  • Vue的computed和watch的区别是什么?
    一、computed介绍computed用来监控自己定义的变量,该变量在data内没有声明,直接在computed里面定义,页面上可直接使用。//基础使用{{msg}}<inputv-model="name"/>......
  • 问:你是如何进行react状态管理方案选择的?
    前言:最近接触到一种新的(对我个人而言)状态管理方式,它没有采用现有的开源库,如redux、mobx等,也没有使用传统的useContext,而是用useState+useEffect写了一个发布订阅者模式进......
  • Mac安装单机版kafka
    下载官网解压启动启动kafka前需要先启动zookeeper,这里使用默认配置,直接启动Kafka自带的zookeepercd到Kafka目录启动内置的zookeeper:./bin/zookeeper-server-s......
  • robocopy超快小文件复制工具
    robocopyi:\.  d:\oldd/e/mir/mt:120/xd“$recycle.bing”/xd“systemvolumeinformation”/r:10/w:10”mt120 表示以120线程复制robocopy 源 目标  robocop......
  • 前端一面必会react面试题(附答案)
    前言:最近接触到一种新的(对我个人而言)状态管理方式,它没有采用现有的开源库,如redux、mobx等,也没有使用传统的useContext,而是用useState+useEffect写了一个发布订阅者模式进......
  • 问:React的useState和setState到底是同步还是异步呢?
    先来思考一个老生常谈的问题,setState是同步还是异步?再深入思考一下,useState是同步还是异步呢?我们来写几个demo试验一下。先看useState同步和异步情况下,连续执行两......
  • 社招前端一面必会react面试题集锦
    vue或者react优化整体优化虚拟dom为什么虚拟dom会提高性能?(必考)虚拟dom相当于在js和真实dom中间加了一个缓存,利用domdiff算法避免了没有必要的dom操......
  • 如何优化大场景实时渲染?HMS Core 3D Engine这么做
    在先前举办的华为开发者大会2022(HDC)上,华为通过3D数字溪村展示了自有3D引擎“HMSCore3DEngine”(以下简称3DEngine)的强大能力。作为一款高性能、高画质、高扩展性的3D引......
  • Unity-C# 协程 IEnumerator 用法梳理
    引用协程为了使用协程,必须在文件头部引入:usingSystem.Collections;启动协程使用StartCoroutine(IEnumerator)来启动一个协程停止协程使用StartCoroutine(IEnumer......
  • 性能监控平台搭建 -- 集成Locust性能数据
    ​文章目录​​问题概述​​​​获取Locust性能数据接口​​​​定时采集性能数据​​​​性能数据采集一致性​​​​no-web模式下获取性能数据​​​​slave模式下不进行......