如何实现统计

hlzyly 2010-06-30 04:11:50
各位:
现通过循环读取文本文件里的内容,通过一些条件截取了相应的内容到字符数组里,现要统计每个数组里的值总共出现了多少次,如何实现呢?举例:比如取第一行文本文件内容,满足条件后截取的内容放到了str[0]的内容为"a",第二次也是放在str[0]里,内容为"a",第三次同样放入str[0]里,内容为"b",如此循环下去一行行读文本文件内容,取相应的内容放到str[0]里,最后分别统计出"a" 的值 为2 ,"b"的值为1,等等。。。
部分代码如下:
while ((currRowStr!= null) &&(nextRowStr!=nul
{
if (满足的条件)
{
nextNextRowStr=reader.ReadLine();
str= System.Text.RegularExpressions.Regex.Split(nextNextRowStr, @"\s+");//将文本文件这一行的内容按空格分开
MessageBox.Show(str[0]);//显示需要的内容。
currRowStr =reader.ReadLine();
nextRowStr = reader.ReadLine();

}
现在就想在读取完文本文件内容后统计每个str[0]里不同的数据各出现了多少次?
...全文
129 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlzyly 2010-06-30
  • 打赏
  • 举报
回复
我已解决了。。。谢谢楼上的。。。已给分
hlzyly 2010-06-30
  • 打赏
  • 举报
回复
初步明白你的意思了,不过再想问一下:之前这些a b c 数据是不固定的。。。不一定会产生a ,或者b。还有在入到str[0]的同时,还要比较str[0]里的内容是否在hashtable里有,如果有,才对相应值统计,如没有,则在hashtable里在添加,但这样会造成一个问题,文本文件数据很大时,比如有10万条符合的数据分别放到str[0]中,最后的str[0]里的数据就会和前面的99999条数据比较,如没有则添加。。。这样统计的时间就太长了。。。有没更好的办法呢?
ztlover 2010-06-30
  • 打赏
  • 举报
回复
就是把数据放到str[0]中时,同时在hashtable中也存放一次,并存储这个字母的个数
如果a存放了3次,则hashtable中的数据为 a 3
如果b存放了5次,则hashtable中的数据为 b 5

也就是说你统计的时候直接从hashtable中统计就行了,不用再str[0]中统计
hlzyly 2010-06-30
  • 打赏
  • 举报
回复
sh_zhuting:能否给出具体算法呢?
amwsse21q 2010-06-30
  • 打赏
  • 举报
回复
有个统计网站
ztlover 2010-06-30
  • 打赏
  • 举报
回复
增加一个hashtable来做吧,
存储键值对,如:a 1 ; b 2 c 5
存储前先按字母a来检索,找到了就将value累加1此,找到不到就添加进去!
hlzyly 2010-06-30
  • 打赏
  • 举报
回复
不是二维的,str是一个数组包括了一行的文本内容,如a b c d e ,然后通过空格分隔开,放入str中,而str[0]只取第一个数值。。。也就是说每行只取第一个数值。当然也可以不放在数组里,有什么好的方法来方便统计呢?
ztlover 2010-06-30
  • 打赏
  • 举报
回复
满足条件后截取的内容放到了str[0]的内容为"a",第二次也是放在str[0]里,内容为"a",第三次同样放入str[0]里,内容为"b",
什么意思呢?没说清楚啊?怎么放到str[0]中呢?str是二位数组?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧