现在的位置: 首页 > 综合 > 正文

C#字数统计(字母、数字、汉字、符号)

2014年08月03日 ⁄ 综合 ⁄ 共 2590字 ⁄ 字号 评论关闭

弄了好久,怕以后忘了,先写下来。

namespace 测试1

{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.richTextBox1.Text = "g你\rs\rs你好吗d   dsDDDDDDDDddssssss、‘\\奇巧';‘l;''’’sssssssssssssssssssssssssssssssssssssssssssssssssssssssssasdddddddddddddddddddd\tddddddddddddddddddddddddddddddddddddddddddddddddda";
        }

        bool skipSpace = true;

        //窗口加载
        private void Form1_Load(object sender, EventArgs e)
        {
            richTextBox1.Focus();
            int cnt1=0, cnt2=0, cnt3=0, cnt4=0;
            if (this.richTextBox1.Text != null)
            {
                string sLine;
                string s = richTextBox1.Text;
                if (skipSpace)
                {
                    {
                        sLine = s.Replace(" ?", "").Replace(" ", "").Replace("\t", "").Replace("\n", "").Replace("\r", "");
                        cnt2 += getByteLength(sLine);
                        cnt1 += getWordLength(sLine);
                        cnt3 += getdigitalLength(sLine);
                        cnt4 += getcharLength(sLine);
                        textBox5.Text = cnt1.ToString();//字数
                        textBox6.Text = cnt2.ToString();//字节数量(不含" ","\t","\n","\r"," ?")
                        textBox7.Text = cnt3.ToString();//数字数量
                        textBox8.Text = cnt4.ToString();//字母数量
                        textBox9.Text = (cnt2 - cnt1).ToString();//汉字数量
                        textBox10.Text = (cnt2 - cnt3 - cnt4 - (cnt2 - cnt1) * 2).ToString();//符号数量
                    }
                }
            }
        }

        //richTextBox1.text内容改变事件
        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {
            bool skipSpace = true;
            int cnt1=0, cnt2=0, cnt3=0, cnt4=0;
            if (this.richTextBox1.Text != null)
            {
                string sLine;
                string s = richTextBox1.Text;
                if (skipSpace)
                {
                    sLine = s.Replace(" ?", "").Replace(" ", "").Replace("\t", "").Replace("\n", "").Replace("\r", "");
                    cnt2 += getByteLength(sLine);
                    cnt1 += getWordLength(sLine);
                    cnt3 += getdigitalLength(sLine);
                    cnt4 += getcharLength(sLine);
                    textBox5.Text = cnt1.ToString();//字数
                    textBox6.Text = cnt2.ToString();//字节数量(不含" ","\t","\n","\r"," ?")
                    textBox7.Text = cnt3.ToString();//数字数量
                    textBox8.Text = cnt4.ToString();//字母数量
                    textBox9.Text = (cnt2 - cnt1).ToString();//汉字数量
                    textBox10.Text = (cnt2 - cnt3 - cnt4 - (cnt2 - cnt1)*2).ToString();//符号数量
                }
            }
        }

         /// <summary>
        /// 返回字数
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        private int getWordLength(string s)
        {
            if (s != null)
                return s.Length;
            else
                return 0;
        }

        /// <summary>
        /// 返回数字(0~9)字数数量
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        private int getdigitalLength(string s)
        {
            int lx = 0;
            char[] q = s.ToCharArray();
            for (int i = 0; i < q.Length; i++)
            {
                if ((int)q[i] >= 48 && (int)q[i] <= 57)
                {
                    lx += 1;
                }
            }
            return lx;
        }

        /// <summary>
        /// 返回字母(A~Z-a~z)字数数量
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        private int getcharLength(string s)
        {
            int lz = 0;
            char[] q = s.ToLower().ToCharArray();//大写字母转换成小写字母
            for (int i = 0; i < q.Length; i++)
            {
                if ((int)q[i] >= 97 && (int)q[i] <= 122)//小写字母
                {
                    lz += 1;
                }
            }
            return lz;
        }

        /// <summary>
        /// 返回字节数
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        private int getByteLength(string s)
        {
            int lh = 0;
            char[] q = s.ToCharArray();
            for (int i = 0; i < q.Length; i++)
            {
                if ((int)q[i] >= 0x4E00 && (int)q[i] <= 0x9FA5) // 汉字
                {
                    lh += 2;
                }
                else
                {
                    lh += 1;
                }
            }
            return lh;
        }
    }
}

抱歉!评论已关闭.