当前位置:首页 > C#学习 > C#软件 > 正文内容

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

小道6年前 (2018-12-04)C#软件4535

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

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


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

分享给朋友:

“C# 字符数统计(源码),汉字、字母、数字、符号统计” 的相关文章

C# 桌面小闹钟1.0版:当前时间,定时,取消定时,托盘显示

C# 桌面小闹钟1.0版:当前时间,定时,取消定时,托盘显示

C#版 桌面小闹钟1.0 显示当前时间,可以定时,取消定时,最小化托盘显示.关闭提示信息.源码+注释:using System; using System.Windows.Forms; //窗体需要使用的 using System.Media;/...

C# Winform窗体单机飞行棋(源码)

C# Winform窗体单机飞行棋(源码)

根据 控制台飞行棋 改造为Winform窗体飞行棋,主要有 登录窗体,游戏窗体,胜利窗体.使用new批量创建 按钮(地图格子),并按顺序排列地图。可显示当前玩家所在坐标、距离终点还剩步数和已取胜局数。使用按钮 背景图片 模拟 掷骰子结果图片。以下为部分代码:   &nb...

C# 窗体简繁转换器(源码) 简体转换为繁体、繁体转换为简体、Ctrl+A全选

C# 窗体简繁转换器(源码) 简体转换为繁体、繁体转换为简体、Ctrl+A全选

可以实现简体转换为繁体,繁体转换为简体。支持Ctrl+A全选。主要使用 Hashtable 哈希表,遍历键\值与输入字符串的 单个字符进判断是否包含.using System; using System.Collections; using System.Diagn...

评论列表

谷商
谷商 IP:
6年前 (2018-12-06)

不错的文章,学习了

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。