当前位置: 源码素材网 » C#教程 » 详情页

Visual C# 人民币金额大小写转换类及调用例子

  •   时间:2018-12-06
  • 概述:金额大写 大小写转换

本篇文章介绍C#如何转换金额大小写,调用了一个C#类文件,这个类专用于人民制金额的大小写转换,用此类编写的大小写转换程序,运行界面如下图所示:

金额的大小写转换

以下是类的代码,你可将此保存成文件,在需要的时候调用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Transform
{
    class Upper
    {
        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;
        }
    }
}

一个调用的例子:

private void btn_transform_Click(object sender, EventArgs e)
{
    int P_int_temp;//定义整型变量
    if (int.TryParse(txt_lower.Text,out P_int_temp))
    {
        txt_upper.Text = //获取转换为大写金额的字符串
            new Upper().NumToChinese(txt_lower.Text);
    }
    else
    {
        MessageBox.Show(//错误提示信息
            "请输入正确整数数值","提示!");
    }
}

    相关内容:

    相关声明:

      若“Visual C# 人民币金额大小写转换类及调用例子”有损您的权益,请告之我们删除内容。
      部分文章来源于网络,版权归原作者所有。