广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#实现数字转换汉字的示例详解
  • 931
分享到

C#实现数字转换汉字的示例详解

C#实现数字转汉字C#数字转汉字C#数字汉字 2022-12-19 06:12:29 931人浏览 独家记忆
摘要

目录实践过程效果代码实践过程 效果 代码 public partial class FORM1 : Form { public Form1() {

实践过程

效果

代码

public partial class FORM1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    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];
            }
        }
        return returnValue;
    } 

    private void button1_Click(object sender, EventArgs e)
    {
        if (txtStr.Text.Trim() == "")
        {
            return;
        }
        else
        {
            if (txtStr.Text.Trim().Length > 16)
            {
                MessageBox.Show("数字金额太大!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                if (txtStr.Text.Trim().Substring(0, 1) == "0")
                {
                    MessageBox.Show("请正确输入金额!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    richTextBox1.Text = CNumToCh(txtStr.Text.Trim());
                }
            }
        }
    }

    private void txtStr_KeyPress(object sender, KeyPressEventArgs e)
    {
        if((e.KeyChar!=8&&!char.IsDigit(e.KeyChar))&&e.KeyChar!=13)
        {
            MessageBox.Show("请输入数字!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            txtStr.Text = "";
            txtStr.Focus();
        }
    }
}
partial class Form1
{
    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.IContainer components = null;

    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

    #region windows Form Designer generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
        this.label2 = new System.Windows.Forms.Label();
        this.label1 = new System.Windows.Forms.Label();
        this.button1 = new System.Windows.Forms.Button();
        this.richTextBox1 = new System.Windows.Forms.RichTextBox();
        this.txtStr = new System.Windows.Forms.TextBox();
        this.SuspendLayout();
        // 
        // label2
        // 
        this.label2.AutoSize = true;
        this.label2.Location = new System.Drawing.Point(17, 53);
        this.label2.Name = "label2";
        this.label2.Size = new System.Drawing.Size(65, 12);
        this.label2.TabIndex = 8;
        this.label2.Text = "转换结果:";
        // 
        // label1
        // 
        this.label1.AutoSize = true;
        this.label1.Location = new System.Drawing.Point(17, 15);
        this.label1.Name = "label1";
        this.label1.Size = new System.Drawing.Size(65, 12);
        this.label1.TabIndex = 7;
        this.label1.Text = "输入数字:";
        // 
        // button1
        // 
        this.button1.Location = new System.Drawing.Point(329, 11);
        this.button1.Name = "button1";
        this.button1.Size = new System.Drawing.Size(75, 23);
        this.button1.TabIndex = 5;
        this.button1.Text = "开始转换";
        this.button1.UseVisualStyleBackColor = true;
        this.button1.Click += new System.EventHandler(this.button1_Click);
        // 
        // richTextBox1
        // 
        this.richTextBox1.Location = new System.Drawing.Point(79, 53);
        this.richTextBox1.Name = "richTextBox1";
        this.richTextBox1.Size = new System.Drawing.Size(325, 131);
        this.richTextBox1.TabIndex = 9;
        this.richTextBox1.Text = "";
        // 
        // txtStr
        // 
        this.txtStr.Location = new System.Drawing.Point(79, 12);
        this.txtStr.Name = "txtStr";
        this.txtStr.Size = new System.Drawing.Size(244, 21);
        this.txtStr.TabIndex = 6;
        this.txtStr.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtStr_KeyPress);
        // 
        // Form1
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(414, 196);
        this.Controls.Add(this.richTextBox1);
        this.Controls.Add(this.txtStr);
        this.Controls.Add(this.label2);
        this.Controls.Add(this.label1);
        this.Controls.Add(this.button1);
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
        this.MaximizeBox = false;
        this.MinimizeBox = false;
        this.Name = "Form1";
        this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
        this.Text = "数字大小写转换";
        this.ResumeLayout(false);
        this.PerformLayout();

    }

    #endregion

    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.RichTextBox richTextBox1;
    private System.Windows.Forms.TextBox txtStr;
}

到此这篇关于C#实现数字转换汉字的示例详解的文章就介绍到这了,更多相关C#数字转汉字内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C#实现数字转换汉字的示例详解

本文链接: https://www.lsjlt.com/news/175181.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作