关于C#实现阿拉伯数字转换成中文大写

来源:互联网 发布:sql insert注意事项 编辑:程序博客网 时间:2024/05/16 05:10
 
        public enum Chinese_Num        {            零 = 0, 壹 = 1, 贰 = 2, 叁 = 3, 肆 = 4, 伍 = 5, 陆 = 6, 柒 = 7, 捌 = 8, 玖 = 9, 点 = 10        }        public enum Unit        {            拾 = 2, 佰 = 3, 仟 = 4, 万 = 5, 亿 = 9, 兆 = 13        }
private void button1_Click(object sender, EventArgs e)        {            string Money = textBox1.Text.Trim();            try            {                Decimal money = Convert.ToDecimal(Money);                Money = money.ToString();                MessageBox.Show(TurnIntoChinese_Num(Money));            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }        }        private string TurnIntoChinese_Num(string money)        {            StringBuilder RMB = new StringBuilder();            //判断输入是否包含小数点            if (money.Contains('.'))            {                //如果小数点前只有一位                if (money.Split('.')[0].Length > 1)                {                    RMB.Append(GetInt(money.Split('.')[0]));                    RMB.Append(GetOne(10) + GetFloat(money.Split('.')[1]));                }                else                {                    RMB.Append(GetOne(Convert.ToInt32(money.Split('.')[0])));                    RMB.Append(GetOne(10) + GetFloat(money.Split('.')[1]));                }            }            else            {                RMB.Append(GetInt(money));            }            return RMB.ToString();        }        /// <summary>        /// 转换整数部分        /// </summary>        /// <param name="money"></param>        /// <returns></returns>        private string GetInt(string money)        {            StringBuilder RMB = new StringBuilder();            int count = money.Length;            int Index = Convert.ToInt32(count / 4);            for (int i = Index; i >= 0; i--)            {                if (GetUnder_four(money.Substring(0, money.Length - 4 * i)) == "")                {                    continue;                }                else                {                    RMB.Append(GetUnder_four(money.Substring(0, money.Length - 4 * i)) + GetIndex(4 * i + 1));                }            }            //if (i == 0)            //{            //    if (money != "0")            //    {            //        RMB.Append(GetUnder_four(money));            //    }            //    else            //    {            //        RMB.Append(GetOne(Convert.ToInt32(money)));            //    }            //}            //else            //{            //    else            //    {            //        RMB.Append(GetUnder_four(money.Substring(0, money.Length - 4 * i)) + GetIndex(4 * i + 1));            //    }            //}            return RMB.ToString();        }        /// <summary>        /// 转换4位以下的数字        /// </summary>        /// <param name="money"></param>        /// <returns></returns>        private string GetUnder_four(string money)        {            StringBuilder RMB = new StringBuilder();            if (money.Length > 4)                money = money.Substring(money.Length - 4);            char[] numlist = money.ToCharArray();            for (int i = numlist.Length; i > 0; i--)            {                char num = numlist[numlist.Length - i];                if (num == '0')                {                    if (i > 1)                    {                        //如果连续为零,只显示一个                        if (numlist[numlist.Length - i + 1] != '0')                        {                            RMB.Append(GetOne(0));                        }                        else                            continue;                    }                }                else                {                    RMB.Append(GetOne(Convert.ToInt16(num.ToString())) + GetIndex(i));                }            }            return RMB.ToString();        }        /// <summary>        /// 转化小数部分        /// </summary>        /// <param name="money"></param>        /// <returns></returns>        private string GetFloat(string money)        {            StringBuilder sb = new StringBuilder();            string C_num = string.Empty;            for (int i = 0; i < money.Length; i++)            {                int num = Convert.ToInt32(money.Substring(i, 1));                C_num = GetOne(num);                sb.Append(C_num);            }            return sb.ToString();        }        /// <summary>        /// 转换单个整数        /// </summary>        /// <param name="money"></param>        /// <returns></returns>        private string GetOne(int money)        {            string Chinese_Num = Enum.GetName(typeof(Chinese_Num), money);            return Chinese_Num;        }        /// <summary>        /// 转化单位        /// </summary>        /// <param name="index"></param>        /// <returns></returns>        private string GetIndex(int index)        {            string Chinese_Num = Enum.GetName(typeof(Unit), index);            return Chinese_Num;        }