C# 字符数统计(源码),汉字、字母、数字、符号统计
字符数统计,可以统计总字符数,汉字总数,字母总数、数字总数、符号总数、单个字符的数量。
可方便的统计出字符个数。 并且能够分别统计出中文汉字,标点符号,字母,数字的个数。
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浏览器 打开 网址. } } }
输出结果:
字符统计软件来源:本站
已经过安全软件检测无毒,请您放心下载。
如需本软件完整源码请留言!仅限学习交流使用!