C#实现数字转换汉字的示例详解
芝麻粒儿 人气:0实践过程
效果
代码
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; }
加载全部内容