C#實現數字轉換漢字的示例詳解
實踐過程
效果
代碼
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#數字轉漢字內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 基於C#實現鼠標設置功能
- C#用websocket實現簡易聊天功能(服務端)
- C#實現圖片輪播功能的示例代碼
- C# 控件屬性和InitializeComponent()關系案例詳解
- C# winForm自定義彈出頁面效果