C#、winfrom设置金额数字大小写转换

版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/qq_41890694/article/details/87857844

C#、winfrom金额数字大小写转换


作者: 张国军_Suger
开发工具与关键技术:Visual Studio 2015、C#、.NET、winfrom

      很多时候我们比如金额就需要对数字的小写转换成大写模式,因此我查找了归纳了如下方法,希望能帮到小伙伴。
实现截图:
C#金额数字小写转大写C#金额数字小写转大写
实现代码:

#region 数字小写转大写
public static string CNumToCh(string X)
{
    //数字转换为中文后的数组 
    string[] num = new string[]
    {
        "零", "壹", "贰", "叁", "肆",
        "伍", "陆", "柒", "捌", "玖"
    };
    //为数字位数建立一个位数组 
    string[] digit = new string[]
    {
        "", "拾", "佰", "仟"
    };
    //为数字单位建立一个单位数组 
    string[] units = new string[]
    {
        "", "万", "亿", "万亿"
    };
    string returnValue = ""; //返回值 
    int finger = 0; //字符位置指针 
    int m = X.Length % 4; //取模 
    int k = 0;
    if (m > 0)
    {
        k = X.Length / 4 + 1;
    }
    else
    {
        k = X.Length / 4;
    }
    //外层循环,四位一组,每组最后加上单位: ",万亿,",",亿,",",万," 
    for (int i = k; i > 0; i--)
    {
        int L = 4;
        if (i == k && m != 0)
            L = m;
        //得到一组四位数 
        string four = X.Substring(finger, L);
        int l = four.Length;
        //内层循环在该组中的每一位数上循环  
        for (int j = 0; j < l; j++)
        {
            //处理组中的每一位数加上所在的位 
            int n = Convert.ToInt32(four.Substring(j, 1));
            if (n == 0)
            {
                if (j < l - 1
                    && Convert.ToInt32(four.Substring(j + 1, 1)) > 0
                    && !returnValue.EndsWith(num[n]))
                {
                    returnValue += num[n];
                }
            }
            else
            {
                if (!(n == 1
                && (returnValue.EndsWith(num[0]) | returnValue.Length == 0)
                && j == l - 2))
                {
                    returnValue += num[n];
                    returnValue += digit[l - j - 1];
                }
            }
        }
        finger += L;
        //每组最后加上一个单位:",万,",",亿," 等 
        if (i < k) //如果不是最高位的一组 
        {
            if (Convert.ToInt32(four) != 0)
            {
                //如果所有4位不全是0则加上单位",万,",",亿,"等 
                returnValue += units[i - 1];
            }
        }
        else
        {
            //处理最高位的一组,最后必须加上单位 
            returnValue += units[i - 1];
        }
    }
    returnValue += "万元整";
    return returnValue;
}
#endregion

猜你喜欢

转载自blog.csdn.net/qq_41890694/article/details/87857844
今日推荐