文档章节

C# VS2017 winForm 金额小写转大写小程序

o
 osc_x4h57ch8
发布于 2018/04/24 10:41
字数 604
阅读 0
收藏 0

 

1.界面

 

2.窗体代码

using System;
using System.Windows.Forms;

namespace RMBMoneyToUpper
{
    public partial class Test_Form_NumToStr : Form
    {
        public Test_Form_NumToStr()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string num = textBox1.Text.Trim();
       
MoneyToUpper moneyToUpper = ();
        textBox2.Text = moneyToUpper(num); } } }

 

3.MoneyToUpper类代码(写在MoneyToUpper.cs文件内)

using System;
using System.Text.RegularExpressions;

namespace htwj_order_print
{
    class MoneyToUpper
    {
        internal string GetMoneyUpper(string num)
        {//金额小写转大写

            string numStr = "不要输入奇怪的内容,仅支持0.01~999999999.99范围内的数字";//存储转换结果
            
            if (RegexAmount(num))
            {//输入的金额合法

                string[] upper = { "", "", "", "", "", "", "", "", "", "", "" };//数字大写
                string[] str0 = num.Split('.');//分割整数部分,小数部分
                string str1 = GetIntUpper(upper, str0[0]);//存储整数部分
                string str2 = "";//存储小数部分

                
                if (str1 != "")
                {

                    if (str0.Length == 1)
                    {//没有小数

                        if (str0[0] == "0")
                        {//只输入了一个0
                            str1 = "零圆";
                        }

                    }

                    else if (str0.Length == 2 && str0[1].Length > 0)
                    {//有小数,转换小数
                        str2 = GetDecUpper(upper, str0[1]);
                    }

                    numStr = (str1 + str2);//合并整数和小数
                }
            }

            return numStr;
        }


        private string GetIntUpper(string[] upper, string str)
        {//处理整数部分

            string intUpper = "";//存储转换后的整数大写
            string[] unit = { "", "", "", "", "", "", "", "", "亿" };//单位数组
            string strUnit = "";//存储单位
            string strUpper = "";//存储大写
            int index = 0;//存储单位数组下标
            int strLen = str.Length;//存储数字个数

            if (strLen < 10)
            {//限制整数部分长度,不能超过亿

                if (str[0].ToString() == "0")
                {//整数部分第一个数为0

                    if (str.Length == 1)
                    {//整数部分有且仅有一个0(0.1之类)
                        intUpper = "零圆";
                    }

                }

                else
                {

                    for (int i = 0; i < strLen; i++)
                    {//遍历整数部分字符串

                        //通过下标,将小写转大写
                        index = Convert.ToInt32(str[i].ToString());
                        strUpper = upper[index].ToString();

                        strUnit = unit[strLen - i - 1].ToString();//添加单位
                        intUpper += (strUpper + strUnit);//连接成字符串
                    }

                    //处理多余的零(这里实在想不出更好的办法了,感谢https://blog.csdn.net/lucky51222/article/details/26388717)
                    intUpper = intUpper.Replace("零拾", "");
                    intUpper = intUpper.Replace("零佰", "");
                    intUpper = intUpper.Replace("零仟", "");
                    intUpper = intUpper.Replace("零零零", "");
                    intUpper = intUpper.Replace("零零", "");
                    intUpper = intUpper.Replace("零零零万", "");
                    intUpper = intUpper.Replace("零零万", "");
                    intUpper = intUpper.Replace("零万", "");
                    intUpper = intUpper.Replace("零零零圆", "");
                    intUpper = intUpper.Replace("零零圆", "");
                    intUpper = intUpper.Replace("零圆", "");
                    intUpper = intUpper.Replace("亿万", "亿");

                }
            }

            return intUpper;
        }


        private string GetDecUpper(string[] upper, string str)
        {//处理小数部分

            string decUpper = "";//存储小数部分大写
            string[] unit = { "", "" };

            for (int j = 0; j < str.Length; j++)
            {//遍历小数部分数字

                //通过下标,将小写转大写
                int index = Convert.ToInt32(str[j].ToString());
                decUpper += (upper[index].ToString() + unit[j].ToString());
            }

            return decUpper;
        }


        private static bool RegexAmount(string Integer)
        {//判断输入的是否为金额(整数 || 2位小数)

            Regex g = new Regex(@"^\d{1,9}(.\d{1,2})?$");
            return g.IsMatch(Integer);

        }

    }
}

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

ftp-ftps-sftp的关系

Ftp FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作...

独钓渔
29分钟前
12
0
使Vim将所有空格显示为字符 - Make Vim show ALL white spaces as a character

问题: I can't find a way to make Vim show all white spaces as a character. 我找不到让Vim将所有空白显示为字符的方法。 All I found was about tabs, trailing spaces etc. 我发现的只......

富含淀粉
40分钟前
23
0
RN 接入高德地图遇到的一些问题

react-native-amap-geolocation、react-native-amap3d 1、iOS Geolocation.getCurrentPosition 获取坐标后,没有返回 address 信息? 逆地理编码 Android 默认返回逆地理编码,而 iOS 需要手...

Jack088
42分钟前
14
0
如何正确清理Excel互操作对象? - How do I properly clean up Excel interop objects?

问题: I'm using the Excel interop in C# ( ApplicationClass ) and have placed the following code in my finally clause: 我在C#( ApplicationClass )中使用Excel互操作,并将以下代......

javail
今天
10
0
java版Spring Cloud Spring Boot b2b2c 直播带货 短视频带货 分销 小程序 电子商务 分布式 微服务

海哇 B2B2C多租户电子商务平台(自营+多商家入驻+分销分佣+直播带货+短视频带货) 管理平台+商家平台+消费端微服务+消费端小程序 使用技术 Spring Cloud、Spring Boot、Mybatis、小程序、Vue...

SpringCloud关注者
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部