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

原创 小道  2018-12-04 22:06:02  阅读 237 次 评论 1 条
摘要:

字符数统计,可以统计总字符数,汉字总数,字母总数、数字总数、符号总数、单个字符的数量。 可方便的统计出字符个数。 并且能够分别统计出中文汉字,标点符号,字母,数字的个数。 using System; using System.Collections.Generic; using System.Diagnostics; using System.Text.RegularExpressions; using System.Windows

字符数统计,可以统计总字符数,汉字总数,字母总数、数字总数、符号总数、单个字符的数量。

可方便的统计出字符个数。 并且能够分别统计出中文汉字,标点符号,字母,数字的个数。


using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace 字符统计
{
    public partial class AMain : Form
    {
        public AMain()
        {
            InitializeComponent();
        }

        private void btnCount_Click(object sender, EventArgs e)
        {
            string strs = txtString.Text;//获取输入框的字符串
            int block = 0;//屏蔽数
            int amoint = 0;//字符总数
            int blanknum = 0;//空格总数
            int english = 0;//字母总数
            int china = 0;//中文总数
            int number = 0;//数字总数
            int enter = 0;//回车换行符总数(\r\n)
            if (int.TryParse(txtNum.Text, out block) == false)//判断屏蔽数
            {
                MessageBox.Show("输入的屏蔽次数不正确!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);//提示
                txtNum.Text = "0";
                return;//不继续执行下面语句
            }
            Regex rc = new Regex(@"[\u4e00-\u9fa5]");//中文 正则表达式
            Regex re = new Regex("^[a-zA-Z]");//字母 正则表达式
            Regex rn = new Regex("^[0-9]");//数字 正则表达式
            Dictionary<char, int> dic = new Dictionary<char, int>();//实例化
            for (int i = 0; i < strs.Length; i++)//循环
            {
                if (rc.IsMatch(strs[i].ToString()))//从指定的起始位置开始,在输入字符串中搜索正则表达式的第一个匹配项,并且仅搜索指定数量的字符。
                {
                    china++;//中文总数+1
                }
                else if (re.IsMatch(strs[i].ToString()))
                {
                    english++;//字母总数+1
                }
                else if (rn.IsMatch(strs[i].ToString()))
                {
                    number++;//数字总数+1
                }
                if (strs[i] == '\r' && strs[i + 1] == '\n')//判断为回车换行符
                {
                    enter++;//回车换行符总数+1
                }

                if (dic.ContainsKey(strs[i]))//判断字典内 是否包含 键
                {
                    dic[strs[i]]++;//键对应的值+1
                    amoint++;//字符总数+1  这个时候 回车换行符(\r和\n)分别各加一次
                }
                else//不包含
                {
                    dic[strs[i]] = 1;//值为1
                    amoint++;////字符总数+1 这个时候 回车换行符(\r和\n)分别各加一次
                }
            }
            txtShow.Clear();//清空输出TXT
            foreach (KeyValuePair<char, int> kv in dic)//循环 定义可设置或检索的键/值对。
            {
                if (kv.Key == ' ')//键 是否为 空格
                {
                    blanknum = kv.Value;//赋值
                }
                if (kv.Value >= block)//判断值 是否 大于屏蔽数
                {
                    if (kv.Key != ' ' && kv.Key != '\r' && kv.Key != '\n')//判断 键 不等于 空 并且 不等于 \r 和 \n
                    {
                        txtShow.AppendText("字符【 " + kv.Key + " 】共出现了【 " + kv.Value + " 】次.\r\n");//输出
                    }
                }
            }
            if (blanknum == 0 || blanknum < block)//判断 空格 数是否 等于0 或者 小于屏蔽数
            {
                txtShow.AppendText("文本共包含【 " + (amoint - blanknum - enter * 2) + " 】个字符.(不含空格.)\r\n");//输出 字符总数-空格数-回车换行符(总数加了2次,所以减去 enter * 2)
                txtShow.AppendText("其中共包含【 " + china + " 】个汉字.\r\n");//输出 汉字 总数
                txtShow.AppendText("其中共包含【 " + english + " 】个字母.\r\n");//输出 字母 总数
                txtShow.AppendText("其中共包含【 " + number + " 】个数字.\r\n");//输出 数字 总数
                txtShow.AppendText("其中共包含【 " + (amoint - blanknum - china - english - number - enter * 2) + " 】个符号.\r\n");//输出符号=总数-空格-汉字-字母-数字-回车换行符
            }
            else
            {
                txtShow.AppendText("文本共包含【 " + (amoint - blanknum - enter * 2) + " 】个字符.(不含空格.)\r\n");
                txtShow.AppendText("其中共包含【 " + blanknum + " 】个空格.\r\n");
                txtShow.AppendText("其中共包含【 " + china + " 】个汉字.\r\n");
                txtShow.AppendText("其中共包含【 " + english + " 】个字母.\r\n");
                txtShow.AppendText("其中共包含【 " + number + " 】个数字.\r\n");
                txtShow.AppendText("其中共包含【 " + (amoint - blanknum - china - english - number - enter * 2) + " 】个符号.\r\n");
            }

        }
        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Process.Start("IExplore", "http://www.daobk.com");//通过使用 IE浏览器 打开 网址.
        }
    }
}

输出结果:

blob.png


字符统计软件来源:本站
已经过安全软件检测无毒,请您放心下载。


如需本软件完整源码请留言!仅限学习交流使用!

本文地址:https://www.daobk.com/post/132.html
版权声明:本文为原创文章,版权归 小道 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

评论列表

  1. 谷商
    谷商 【潜水】  @回复

    不错的文章,学习了