标题:C#人民币小写金额转大写金额
只看楼主
C心情
Rank: 2
等 级:论坛游民
帖 子:90
专家分:74
注 册:2008-1-19
结帖率:60%
 问题点数:0 回复次数:12 
C#人民币小写金额转大写金额
我用C#刚写完的金额转换代码,因时间仓促,没有经过详细的测试,代码也写得不规范,所以发出来请各位指点一下!
QQ:283240512

#region 人民币小写金额转大写金额
        /// <summary>
        /// 小写金额转大写金额
        /// </summary>
        /// <param name="Money">接收需要转换的小写金额</param>
        /// <returns>返回大写金额</returns>
        public string ConvertMoney(Decimal Money)
        {
            //金额转换程序
            string MoneyNum = "";//记录小写金额字符串[输入参数]
            string MoneyStr = "";//记录大写金额字符串[输出参数]
            string BNumStr = "零壹贰叁肆伍陆柒捌玖";//模
            string UnitStr = "万仟佰拾亿仟佰拾万仟佰拾圆角分";//模

            MoneyNum = ((long)(Money * 100)).ToString();
            for (int i = 0; i < MoneyNum.Length; i++)
            {
                string DVar = "";//记录生成的单个字符(大写)
                string UnitVar = "";//记录截取的单位
                for (int n = 0; n < 10; n++)
                {
                    //对比后生成单个字符(大写)
                    if (Convert.ToInt32(MoneyNum.Substring(i, 1)) == n)
                    {
                        DVar = BNumStr.Substring(n, 1);//取出单个大写字符
                        //给生成的单个大写字符加单位
                        UnitVar = UnitStr.Substring(15 - (MoneyNum.Length)).Substring(i, 1);
                        n = 10;//退出循环
                    }
                }
                //生成大写金额字符串
                MoneyStr = MoneyStr + DVar + UnitVar;
            }
            //二次处理大写金额字符串
            MoneyStr = MoneyStr + "整";
            while (MoneyStr.Contains("零分") || MoneyStr.Contains("零角") || MoneyStr.Contains("零佰") || MoneyStr.Contains("零仟")
                || MoneyStr.Contains("零万") || MoneyStr.Contains("零亿") || MoneyStr.Contains("零零") || MoneyStr.Contains("零圆")
                || MoneyStr.Contains("亿万") || MoneyStr.Contains("零整") || MoneyStr.Contains("分整"))
            {
                MoneyStr = MoneyStr.Replace("零分", "零");
                MoneyStr = MoneyStr.Replace("零角", "零");
                MoneyStr = MoneyStr.Replace("零拾", "零");
                MoneyStr = MoneyStr.Replace("零佰", "零");
                MoneyStr = MoneyStr.Replace("零仟", "零");
                MoneyStr = MoneyStr.Replace("零万", "万");
                MoneyStr = MoneyStr.Replace("零亿", "亿");
                MoneyStr = MoneyStr.Replace("亿万", "亿");
                MoneyStr = MoneyStr.Replace("零零", "零");
                MoneyStr = MoneyStr.Replace("零圆", "圆零");
                MoneyStr = MoneyStr.Replace("零整", "整");
                MoneyStr = MoneyStr.Replace("分整", "分");
            }
            if (MoneyStr == "整")
            {
                MoneyStr = "零元整";
            }
            return MoneyStr;
        }
        #endregion
搜索更多相关主题的帖子: 人民币 金额 小写 
2008-10-30 09:52
hellson
Rank: 2
来 自:北京
等 级:新手上路
威 望:4
帖 子:195
专家分:0
注 册:2008-9-1
得分:0 
为什么不用正则呢?那个很好很强大的
using System.Text.RegularExpressions;
        string s = double.Parse(this.TextBox1.Text).ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");//d + "\n" +
        string d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
        Response.Write( Regex.Replace(d, ".", delegate(Match m) { return "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟萬億兆京垓秭穰"[m.Value[0] - '-'].ToString(); }));

春了夏了秋冬了,来了来了又来了
相信我的帖子打开都很快,看我头像就知道了
2008-10-30 10:53
yx880502
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2008-5-5
得分:0 
2楼的正则要把我搞陶醉了
2008-11-02 02:19
搁浅
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-10-31
得分:0 
2楼的很强大
2008-11-02 14:09
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
得分:0 
回复 2# 的帖子
我也醉了,怎么象火星文字。


仁者乐膳,智者乐睡。我都爱~
2008-11-02 14:13
C心情
Rank: 2
等 级:论坛游民
帖 子:90
专家分:74
注 册:2008-1-19
得分:0 
我知道有正则表达式,但没有详细的研究过,初浅的用过,也只是用来验证用户的输入,比如验证是否是数字等,但没想过用来转换金额大小写,所以才费劲的自己写.
现在还是没看不明白,哪位能详细的解释一下更好,多谢各位了!
2008-11-02 15:21
seiya027848
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2008-6-27
得分:0 

很复杂,但很强大
2008-11-03 10:29
hikor
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2008-8-2
得分:0 
太强大了 专家级别人物 很黄很暴力啊
2008-11-03 10:45
lauc
Rank: 1
来 自:新疆
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-10-8
得分:0 
#region
 。。。
#endregion
这个是预编译吗?是应用程序运行前就运行的吗,这个不太明白,楼主能不能讲解一下呀。在此先谢过!
2008-11-03 19:26
mkxzy
Rank: 2
等 级:论坛游民
帖 子:39
专家分:40
注 册:2007-3-26
得分:0 
region和endregion没什么实际意义,唯一的用处就是在VS中这段代码可以折叠起来并且加上一个注释
2008-11-03 20:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-241446-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.123640 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved